教你使用DataAdapter优化ADO.NET连接池

开发 后端
我们都知道连接是很耗费资源的,所以我们都提倡用连接池,文章就ADO.NET连接池的使用给大家详细的分析,希望对大家有帮助。

经过长时间学习ADO.NET连接池,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。用于ODBC的SQL Server、OLE DB和.NET框架数据提供程序隐式缓冲连接。通过在连接字符串中指定不同的属性值,可以控制ADO.NET连接池的行为。

#T#DataAdapter 的Fill和Update方法在连接关闭的情况下自动打开为相关命令属性指定的连接。如果Fill或Update方法打开了连接,Fill或Update 将在操作完成的时候关闭它。为了获得***性能,仅在需要时将与数据库的连接保持为打开。同时,减少打开和关闭多操作连接的次数。如果只执行单个的Fill或Update方法调用,建议允许Fill或Update方法隐式打开和关闭连接。如果对Fill和Update调用有很多,建议显式打开连接,调用Fill和Update,然后显式关闭连接。另外,当执行事务时,显式地在开始事务之前打开连接,并在提交之后关闭连接。例如:

  1. 'Visual Basic  
  2. Public Sub RunSqlTransaction(da As SqlDataAdapter, myConnection As SqlConnection, ds As DataSet)  
  3. myConnection.Open()  
  4. Dim myTrans As SqlTransaction = myConnection.BeginTransaction()  
  5. myCommand.Transaction = myTrans 
  6.  
  7. Try  
  8. da.Update(ds)  
  9. myTrans.Commit()  
  10. Console.WriteLine("Update successful.")  
  11. Catch e As Exception  
  12. Try  
  13. myTrans.Rollback()  
  14. Catch ex As SqlException  
  15. If Not myTrans.Connection Is Nothing Then  
  16. Console.WriteLine("An exception of type " & ex.GetType().ToString() & " was encountered while attempting to roll back the transaction.")  
  17. End If  
  18. End Try  
  19.  
  20. Console.WriteLine("An exception of type " & e.GetType().ToString() & " was encountered.")  
  21. Console.WriteLine("Update failed.")  
  22. End Try  
  23. myConnection.Close()  
  24. End Sub  
  25.  
  26. //C#  
  27. public void RunSqlTransaction(SqlDataAdapter da, SqlConnection myConnection, DataSet ds)  
  28. {  
  29. myConnection.Open();  
  30. SqlTransaction myTrans = myConnection.BeginTransaction();  
  31. myCommand.Transaction = myTrans;  
  32.  
  33. try  
  34. {  
  35. da.Update(ds);  
  36. myCommand.Transaction.Commit();  
  37. Console.WriteLine("Update successful.");  
  38. }  
  39. catch(Exception e)  
  40. {  
  41. try  
  42. {  
  43. myTrans.Rollback();  
  44. }  
  45. catch (SqlException ex)  
  46. {  
  47. if (myTrans.Connection != null)  
  48. {  
  49. Console.WriteLine("An exception of type " + ex.GetType() +" was encountered while attempting to roll back the transaction.");  
  50. }  
  51. }  
  52.  
  53. Console.WriteLine(e.ToString());  
  54. Console.WriteLine("Update failed.");  
  55. }  
  56. myConnection.Close();  
责任编辑:田树 来源: 博客
相关推荐

2009-11-03 16:57:34

ADO.NET FAQ

2009-12-23 14:53:28

ADO.NET连接池

2009-11-03 15:58:22

2009-11-12 10:15:37

ADO.NET使用

2009-11-03 16:51:04

ADO.NET连接池观

2009-11-13 13:11:37

ADO.NET连接池

2009-12-23 09:01:15

ADO.NET连接池

2009-12-23 09:14:52

ADO.NET连接池

2009-12-30 16:22:58

ADO.NET连接池

2009-11-13 10:57:28

ADO.NET Dat

2009-11-12 09:25:21

ADO.NET连接池

2009-12-24 09:49:02

ADO.Net连接池

2010-01-05 10:11:23

ADO.NET连接池

2010-02-25 09:06:40

ADO.NET连接池

2009-11-04 11:30:35

ADO.NET Dat

2009-12-30 16:26:12

ADO.NET连接池

2009-07-20 14:03:43

Ado.net连接池

2010-01-04 10:19:45

ADO.NET Dat

2009-06-26 14:41:48

ADO.NET

2010-01-04 16:18:13

ADO.NET连接池
点赞
收藏

51CTO技术栈公众号