嗯。。先解决你的疑问,你有没有发现
MessageBox.Show(Convert.ToString(cmd.CommandText));
里面显示的是 cmd.CommandText。
而 cmd.CommandText 正是你上一行代码给赋的值。
好了。来改改代码吧。
首先 conn 和 cmd 的声明有错误。
conn 作为一个数据库的连接对象。我们应该把连接字符串赋给它。也就是:
SqlConnection conn = new SqlConnection("Server =.;DataBase = master;User Id = sa;Pwd = sa;");
cmd的构造函数,如果只传递一个参数的话。那么这个参数应该是查询语句,也就是你第三行写到的 "Select a from 111111"; 我想问一下。用11111作表名。不会有问题么。呵呵 。感觉很奇怪。建议表名还是包含一些英文字母吧。
一般用两个参数的构造函数,第二个参数是连接对象
cmd的声明可以这样:
SqlCommand cmd = new SqlCommand("Select a from 111111",conn);
或者是
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Select a from 111111";
cmd.Connection = conn;
声明完毕,开始准备取结果了。
如果要显示查询结果的话。首先你要做的就是打开连接,并执行这条查询,在ADO.NET里面。我们可以使用 ExecuteScalar() 来返回查询结果的第一行第一列的值。查询完毕记得把连接关闭。
也就是说,如果你要显示的只是查询到的第一个A的值的话 可以使用
conn.Open();
MessageBox.Show(cmd.ExecuteScalar().ToString());
conn.Close();
conn.Dispose();
=====================================================
如果要显示多行的话。可以考虑用 DataTable 或者是 SqlDataReader;
返回DataTable的话,需要用到数据库适配器: SqlDataAdapter
这样声明的:SqlDataAdapter da = new SqlDataAdapter(cmd);
另外 SqlDataAdapter 是不需要手动打开连接的。它会自己打开一个连接
那么 再定义一个DataTable 用于保存查询结果
DataTable dt = new DataTable ();
这样一来。我们就可以使用适配器来填充这个表格。像这样:
da.Fill(dt);
得到的 dt 就是我们需要的结果了。
查询完毕记得把连接断开。
整理一下代码
SqlConnection conn = new SqlConnection("Server =.;DataBase = master;User Id = sa;Pwd = sa;");
SqlCommand cmd = new SqlCommand("Select a from 111111",conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
conn.Close();
conn.Dispose();
剩下的就是显示了。用for 或者是 foreach进行循环取出里面的值。
===========================================================
DataReader 的情况差不多。手动打开连接。
SqlDataReader sdr = cmd.ExecuteReader( CommandBehavior.CloseConnection );
里面的CommandBehavior.CloseConnection 表示 ,当这个reader关闭时。连接也自动关闭。所以用完后 只需要执行sdr.Close();就行了。。
但是如果你是这样声明的
SqlDataReader sdr = cmd.ExecuteReader();
用完后
光执行 sdr.Close();是不行的,还需要手动把conn给关闭了,像这样:
conn.Close();
conn.Dispose();
代码整理一下:
SqlConnection conn = new SqlConnection("Server =.;DataBase = master;User Id = sa;Pwd = sa;");
conn.Open();
SqlCommand cmd = new SqlCommand("Select a from 111111",conn);
SqlDataReader sdr = cmd.ExecuteReader( CommandBehavior.CloseConnection );
while(sdr.Read()){
//这里执行你的代码 ,如: MessageBox.Show( sdr.GetString(0));
}
sdr.Close();
温馨提示:答案为网友推荐,仅供参考