程序員對ADO.NET技巧說明研究
ADO.NET提供了幾種命令執行的不同方法以及優化命令執行的不同選項。下面包括一些ADO.NET技巧,它們是關于選擇***命令執行以及如何提高執行命令的性能,及他是怎么運作的。
使用OleDbCommand的***實踐
不同.NET框架數據提供程序之間的命令執行被盡可能標準化了。但是,數據提供程序之間仍然存在差異。下面給出一些技巧,可微調用于OLE DB的.NET框架數據提供程序的命令執行。
1) 按照ODBC CALL語法使用CommandType.Text調用存儲過程。使用CommandType.StoredProcedure只是秘密地生成ODBC CALL語法。
2) 一定要設置OleDbParameter的類型、大小(如果適用)、以及精度和范圍(如果參數類型是numeric或decimal)。注意,如果不顯式提供參數信息,OleDbCommand會為每個執行命令重新創建OLE DB參數訪問器。
使用SqlCommand的***實踐
使用SqlCommand執行存儲過程的快速提示:ADO.NET技巧如果調用存儲過程,將SqlCommand的CommandType屬性指定為StoredProcedure的CommandType。這樣通過將該命令顯式標識為存儲過程,就不需要在執行之前分析命令。 #t#
使用Prepare方法
對于重復作用于數據源的參數化命令,Command.Prepare方法能提高性能。Prepare指示數據源為多次調用優化指定的命令。要想有效利用Prepare,需要徹底理解數據源是如何響應Prepare調用的。對于一些數據源(例如SQL Server 2000),命令是隱式優化的,不必調用Prepare。對于其他(例如SQL Server 7.0)數據源,Prepare會比較有效。
顯式指定架構和元數據
只要用戶沒有指定元數據信息,ADO.NET技巧的許多對象就會推斷元數據信息。下面是一些示例:
1) DataAdapter.Fill方法,如果DataSet中沒有表和列,DataAdapter.Fill方法會在DataSet中創建表和列。
2) CommandBuilder,它會為單表SELECT命令生成DataAdapter命令屬性。
3) CommandBuilder.DeriveParameters,ADO.NET技巧會填充Command對象的Parameters集合。
但是,每次用到這些特性,都會有性能損失。建議將這些特性主要用于設計時和即席應用程序中。ADO.NET技巧在可能的情況下,顯式指定架構和元數據。其中包括在DataSet中定義表和列、定義DataAdapter的Command屬性、以及為Command定義Parameter信息。