拜托~~谁帮我解释下好么?为什么会出这样子的错
public int daStudent()
{
int tag=0;
SqlConnection conn=new SqlConnection(connString);
string query="select * from student where [sID]='"+textBox1.Text+"'and [sPassage]='"+textBox2.Text+"'";
SqlCommand stuCom=conn.CreateCommand();
stuCom.CommandText=query;
conn.Open();
try
{
SqlDataReader dr=stuCom.ExecuteReader();
if(dr.Read())
{
tag=1;
}
dr.Close();
}
catch(Exception e)
{
MessageBox.Show(e.StackTrace);
}
conn.Close();
return tag;
}
错误提示:
未处理的“System.Data.SqlClient.SqlException”类型的异常出现在 system.data.dll 中。
其他信息: 系统错误。
SQL语句我放到查询分析器里去看过的,没问题啊
提示的错误在这句上面: SqlDataReader dr=stuCom.ExecuteReader();
然后catch到的错误讲:
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
at System.Data.SqlClient.SqlCommand.ExecuteReader()
at stuTeaMan.Form1.daStudent() in c:\documents and settings\administrator\桌面\aaa\stuteaman\stuteaman\login.cs:line 154
(154行就是这行: SqlDataReader dr=stuCom.ExecuteReader();)
我已经好迷茫了啊~~~到底怎么错的啊~~~~
问题点数:100、回复次数:11Top
1 楼54783szg(百里洲)回复于 2005-06-30 15:55:01 得分 10
SqlConnection myConn = new SqlConnection(connString);
string query="select * from student where [sID]='"+textBox1.Text+"'and [sPassage]='"+textBox2.Text+"'";
try
{
SqlCommand myComm = new SqlCommand(query,myConn);
......
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
myConn.Close();
}
Top
2 楼net_lover(【孟子E章】)回复于 2005-06-30 15:57:53 得分 5
string query="select * from student where [sID]='"+textBox1.Text+"' and [sPassage]='"+textBox2.Text+"'";
是不是少了空格
Top
3 楼ld_thinking(懒得想)回复于 2005-06-30 16:01:29 得分 5
sID sPassage 都是文本类型?
你已经catch怎么还会抱错 ?Top
4 楼3tzjq(永不言弃)回复于 2005-06-30 16:03:23 得分 5
改这句试试:
SqlCommand stuCom=new SqlCommand(query,conn);
....
Top
5 楼fishfish__flying(fishfish__flying)回复于 2005-06-30 16:06:32 得分 0
啊~~~!!太谢谢可爱的各位啦……我把列名写错啦(该检讨)。
顺便问下如果我要用DataSet实现查询的话应该怎么写这段呢~~??继续谢谢各位啦~~~~嘿Top
6 楼3tzjq(永不言弃)回复于 2005-06-30 16:07:01 得分 10
还有提醒你:
最好将conn.Close();放到finally{conn.Close();}中去。Top
7 楼fishfish__flying(fishfish__flying)回复于 2005-07-01 09:02:40 得分 0
SqlDataAdapter da = new SqlDataAdapter(query,conn);
DataSet ds = new DataSet();
da.Fill(ds,"test");
if(ds.Tables[0].Rows.Count == 0)
tag=1;
请问下da.Fill(ds,"test");里面的test是什么?我看了书上的,好像又不是表名,比方说数据库里的表叫title,它这里写的就是Title,要是我把Title改成Titles就什么也查不出来了,为什么呢?
Top
8 楼WTaoboy(SnowMans)回复于 2005-07-01 09:18:25 得分 5
dim adr() as DataRow = ds.Table("student").Select("sID='11111'","sPassage='222222'")Top
9 楼sfanpu(Erick Shuai)回复于 2005-07-01 10:31:28 得分 30
暈----“列名写错”
其實如果只做查詢的話用sqldatareader的效率是最高的了。
要用dataset的話:
public DataSet SelectSqlSrvRows(DataSet dataset,string connection,string query)
{
SqlConnection conn = new SqlConnection(connection);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(query, conn);
adapter.Fill(dataset);
return dataset;
}
Top
10 楼mathsword(梦在流浪)回复于 2005-07-01 11:27:45 得分 30
Fill 方法支持以下情况:DataSet 包含多个 DataTable 对象,而这些对象的名称只有大小写不同。在这种情况下,Fill 执行区分大小写的比较以查找相应的表,如果不存在完全匹配的表,则新建一个。下面的 C# 代码阐释该行为。
DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
dataset.Tables.Add("AAA");
adapter.Fill(dataset, "aaa"); // Fills "aaa", which already exists in the DataSet.
adapter.Fill(dataset, "Aaa"); // Adds a new table called "Aaa".
如果调用 Fill 并且 DataSet 只包含一个其名称只有大小写不同的 DataTable,则更新该 DataTable。在这种情况下,比较不区分大小写。下面的 C# 代码阐释该行为。
DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
adapter.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.
Top
11 楼fishfish__flying(fishfish__flying)回复于 2005-07-01 14:55:31 得分 0
hoho~~~~~3Q各位啦~~~结了~~Top




