日期:2014-05-18  浏览次数:20407 次

关于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