SQL Server--频繁建立连接和断开连接
使用数据库时,不建议一直与数据库保持连接,最好用时连接用完断开连接。
我的C#程序中采用“用时连接用完断开连接”的方式:
- 之前是C#程序调用本地数据库,没遇到问题;
- 后来改为C#程序通过IP地址连接远程数据库,在某次读取中遇到“在从服务器接收结果时发生传输级错误。 (provider: TCP Provider, error: 0 - 指定的网络名不再可用。)”的报错。
网上查到有这样处理的:SqlConnection 连接对象在高并发线程频繁的打开和关闭导致的,所以处理方式就改成了只有在不使用连接的时候才关闭它。
怀疑是因为改为连接远程数据库后,连接数据库受网络的影响,才报错的。
也怀疑是using(){}用的不完全对,其处理托管资源与非托管资源时有区别。
1 //增删改方法 2 public static int Execute(string sql, Object param) 3 { 4 using (IDbConnection conn = GetConnection()) 5 { 6 return conn.Execute(sql, param); 7 } 8 } 9 10 //连接数据库 11 private static SqlConnection GetConnection() 12 { 13 SqlConnection connection = new SqlConnection(connectionSqlserver); 14 try 15 { 16 connection.Open(); 17 } 18 catch (Exception e) 19 { 20 logger.ErrorFormat("Exception: {0}", e.Message); 21 Console.WriteLine("Exception: {0}", e.Message); 22 DbConnected = false; 23 return null; 24 } 25 DbConnected = true; 26 return connection; 27 }
记录一下,后期找找原因。