请教一个sqlconnection打开关闭的问题..
public static DataTable SqlExecDatatable(string sqlstr, SqlParameter[] sp){
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(sqlconnstr))
{
SqlCommand cmd = new SqlCommand(sqlstr, conn);
for (int i = 0; i < sp.Length; i++)
{
cmd.Parameters.Add(sp[i]);
}
SqlDataAdapter ada = new SqlDataAdapter(cmd);
ada.Fill(ds);
return ds.Tables[0];
}
}
看到一段之前的程序员写的代码..这个方法是怎么打开和关闭数据库的?
因为是初学者,对数据库的操作,应该了解哪方面的知识,或者资料推荐?
谢谢各位! --------------------编程问答-------------------- DataSet ,SqlDataAdapter 这种方式数据库是自动打开用完自动关闭的,可以参考MSDN或者买本书看,书上讲得很详细。
参考别人博文 --------------------编程问答-------------------- ada.Fill(ds)这句话内部会判断cmd关联的conn是否已经打开,如果没有打开,ada.Fill(ds)会自动打开conn,ada.Fill(ds)完成后,会把conn的打开状态恢复到ada.Fill之前的状态,
--------------------编程问答-------------------- 如果你没有用SqlDataAdapter,而是用cmd的ExecuteXXX方法,则在执行cmd之前必须自己用conn.Open打开连接,
如果你用SqlDataAdapter,那么可以调用conn.Open也可以不调用, --------------------编程问答-------------------- 1、SqlDataAdapter的Fill方法被调用的时候,会自动调用SqlConnection连接对象的Open方法
2、SqlDataAdapter的调用完Fill方法的时候,会自动关闭这个连接
3、当你的代码运行离开using后面的{}所包含的范围,那么在using后的()中声明的变量就会被释放,也就是说你声明的conn 不论是否是被SqlDataAdapter还是SqlCommand使用,在离开using后都会被释放,也就自动被关闭了。 --------------------编程问答-------------------- +1
最好还是能自己加个con.oepn()和close()方法,也可以用using()来进行自动释放,这样也能避免没有释放,占用资源的话是很危险的 --------------------编程问答-------------------- 好帖子,新手学习了……………… --------------------编程问答-------------------- 好帖子,新手学习了……………… --------------------编程问答--------------------
这正好是涉及到SqlDataAdapter时最最最反对的作法!!!楼主你还是听4楼的,5楼这位简直是在混淆视听:-)
--------------------编程问答-------------------- --------------------编程问答-------------------- 这个问题就相当与DataSet与DataReader的区别,前者不需要数据库连接,而后者则需要连接好数据库 --------------------编程问答--------------------
很好,有条理
是这样的,如果直接用SqlCommand的话就应该先Open
你现在这里是通过using关闭释放连接 --------------------编程问答-------------------- MSDN资料
http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection%28VS.80%29.aspx --------------------编程问答-------------------- 挺好! --------------------编程问答-------------------- 赞一个! --------------------编程问答-------------------- 亲,SqlDataAdapter 是自动打开个关闭连接的哦。
补充:.NET技术 , C#