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

处理SQL连接共享

时间:2023-04-10 22:24:18 C#

处理SQL连接我有一个连接到数据库并转发DataTable的SQL类。我知道完成后必须处理SqlConnection。我知道这可以使用using块来完成,但是将Dispose()调用放在此类的析构函数中是否也可以接受?这是我的代码:publicclassSQLEng{//ConnectionStringProperty//必须设置以建立与数据库的连接publicstringConnectionString{get;放;}SqlConnection_Conn;//OverriddenConstructor强制在创建时设置连接字符串publicSQLEng(stringconnectionString){ConnectionString=connectionString;_Conn=newSqlConnection(connectionString);}//确保在销毁此对象时释放SqlConnectionpublic~SQLEng(){_Conn.Dispose();}//获取数据表等的各种其他方法...}基本上我想要一个类变量SqlConnection而不是在访问数据库的每个方法中实例化SqlConnection。这听起来有效吗?您的设计鼓励长时间挂在(可能打开的)SqlConnection上。最佳做法是在需要时打开连接,然后在完成后立即释放(关闭并处理)它。是的,创建新连接会产生一些开销;连接池减少了大部分处理时间。更糟糕的是在服务器上保持许多连接。查看企业库的源代码(来自MSPatterns&Practices团队),DAAB根据需要创建连接并尽快处理它。publicvirtualintExecuteNonQuery(DbCommandcommand){使用(varwrapper=GetOpenConnection()){PrepareCommand(command,wrapper.Connection);返回DoExecuteNonQuery(命令);}}protectedDatabaseConnectionWrapperGetOpenConnection(){DatabaseConnectionWrapperConnectionConnection=this);返回连接??GetWrappedConnection();所以我想说这是最佳实践。在大多数情况下,您所做的只是将连接返回到连接池,因此连接本身并没有关闭。如果您希望包装SQLConnection类,请实现IDisposable并从您自己的Dispose()方法调用Dispose()连接。此处提供更多信息:正确处理DbConnection至于这是否是一个好的做法-好吧,如果您所做的只是将SQL连接包装在另一个类中,我不确定您取得了什么成就。您的所有方法仍然需要访问此类的实例,在这种情况下,它们自己可以访问连接对象的实例。以上就是《C#学习教程:处理SQL连接共享》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: