当前位置: 代码迷 >> ASP.NET >> 关于SqlConnection,SqlDataAdapter,SqlDataReader操作数据库的有关问题!
  详细解决方案

关于SqlConnection,SqlDataAdapter,SqlDataReader操作数据库的有关问题!

热度:6687   发布时间:2013-02-25 00:00:00.0
关于SqlConnection,SqlDataAdapter,SqlDataReader操作数据库的问题!!
问题1:SqlConnection连接数据库后,如果不手动关闭(conn.close();),它能自动关闭吗?

问题2:SqlDataAdapter,SqlDataReader对数据库操作的时候,能实现对资源访问的互斥吗?

谢谢大家!!

------解决方案--------------------------------------------------------
问题1:SqlConnection连接数据库后,如果不手动关闭(conn.close();),它能自动关闭吗?
A:会自动关闭,不过要等好久

问题2:SqlDataAdapter,SqlDataReader对数据库操作的时候,能实现对资源访问的互斥吗?
A:SqlDataAdapter 可以共享 SqlConnection
SqlDataReader 独占 SqlConnection
------解决方案--------------------------------------------------------
Y
------解决方案--------------------------------------------------------
会自动关闭
使用 SqlDataAdapter 前可以不conn.open(),使用完不用关闭

使用 SqlDataReader 前SqlConnection 必须open
------解决方案--------------------------------------------------------

会自动关闭,如果用SqlDataAdapter可以不用显示的打开或关闭连接



------解决方案--------------------------------------------------------
1。你可以这样打开 sqlconnection conn=new sqlconnection();然后处理
2。你也可以 using(sqlconnection conn=new sqlconnection())
{
//建Adapter、Reader等。 进行数据库操作
}
上面2种不同的是: 方法1不会自动关闭conn.state== "open ";但方法2会在用完后自动关闭里面的所有对象,包括Reader对象

Reader的同时不能使用Adapter,能实现对资源访问的互斥,Adapter是自动利用数据流读出数据并暂存起来,当使用存储过程的时候,需要使用打开的Command,来操作参数,Adapter.SelectCommand=Command;
------解决方案--------------------------------------------------------
问题1:SqlConnection连接数据库后,如果不手动关闭(conn.close();),它能自动关闭吗?
从习惯和效率来说,都必须关闭
问题2:SqlDataAdapter,SqlDataReader对数据库操作的时候,能实现对资源访问的互斥吗?
SqlDataAdapter 可以共享 SqlConnection
SqlDataReader 独占 SqlConnection
  相关解决方案