当前位置: 首页 > 编程语言 > C#

通过使用语句和Dispose为DataTable,SqlConnection,SqlCommand和SqlDataAdapter清理资源分享

时间:2023-04-11 00:24:28 C#

C#学习教程:使用语句和Dispose清理DataTable、SqlConnection、SqlCommand和SqlDataAdapter的资源.我知道有很多方法可以做到这一点(与所有编程一样),我应该通过调用Dispose()和/或Close()来清理资源。阅读这篇文章或处理我认为我应该使用using语句的问题,这应该足够了。下面是我如何称呼它。我的问题是——我是否过于复杂化了,这会清理所有资源吗?privateInt32CallStoredProcedure(Int32Id){使用(vardt=newDataTable()){使用(varconn=newSqlConnection(ConnectionString)){使用(varsqlCmd=newSqlCommand("SEL_StoredProcedure",conn)){使用(varsda=newSqlDataAdapter(sqlCmd)){sqlCmd.CommandType=System.Data.CommandType.StoredProcedure;sqlCmd.Parameters.AddWithValue("@ID",Id);sqlCmd.Connection.Open();sda.填充(dt);}}}如果(dt.Rows.Count==1)返回Convert.ToInt32(dt.Rows[0]["IDv2"]);elseif(dt.Rows.Count>1)thrownewException("使用提供的ID找到多条记录;ID="+studentId.ToString());}返回0;PS-我知道我可以调用ExecuteScalar,但这不是我在这里寻找的,因为我将使用非标量调用的通用格式。您编写的代码确实可以正确处理所有对象。您应该知道,处置DataTable会导致对象无法使用,这通常不是DataTable的意图。通常,如果您要填充DataTable,您打算将数据保留一段时间(缓存),而不是在查询方法中将其丢弃。据我所知,您不需要用块包装DataTable或SqlDataAdapter,因为它们没有实现IDisposable。可以把using语句“链接”到这个:以上是C#学习教程:清理DataTable、SqlConnection、SqlCommand和SqlDataAdapter资源共享的全部内容,通过using语句和Dispose,如果对大家有用,需要的话深入了解C#希望大家多多关注教程——using(varconn=newSqlConnection(connectionString))using(varcmd=newSqlCommand("SEL_storedProcedure",conn)){}本文收集自网络且不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: