日期:2014-05-17  浏览次数:20822 次

关于数据库语句open函数的一些问题
SqlConnection conn = new SqlConnection("server=.;database=db_lvshuang;uid=sa;pwd=sa");
  // conn.Open();
  SqlDataAdapter sda = new SqlDataAdapter("select * from tb_test", conn);
  DataSet ds = new DataSet();
  sda.Fill(ds, "tt");
  dataGridView1.DataSource = ds.Tables[0];
这是导出数据库表的代码,书上在实例化SqlConnection对象后没写open语句也能导出表,我表示疑问,数据库连接没打开怎么可能导出数据,可是事实能导出求解啊

我是新手,学东西喜欢纠结小细节,也许答案很白痴,还是求大神们解答,不吝惜分

------解决方案--------------------
SqlDataAdapter是会自己去打开的
如果你换成SqlDataReader试试,这个就必须要求你 connection.Open()了。
------解决方案--------------------
C# code

SqlConnection conn = new SqlConnection("server=.;database=db_lvshuang;uid=sa;pwd=sa");
  // conn.Open();
  //你可以在这里去查看conn的ConnectionState 。设断点,加代码,都可以的
  SqlDataAdapter sda = new SqlDataAdapter("select * from tb_test", conn);

------解决方案--------------------
使用SqlDataAdapter 时,不用使用Connection 对象的Open方法,因为SqlDataAdapter会自动开放一个连接,然后提交查询,获取结果,最后关闭连接。如果Fill方法之前就开放了 Connection ,那么Connection在操作之后仍然保持开放的状态。

http://blog.sina.com.cn/s/blog_567b904d01014t6b.html
------解决方案--------------------
SqlDataAdapter是非断开式,不用显示打开sqlConnection对象;
sqlDataReader反之;