1.資料庫連接開啟和關閉。 在需要串連時開啟,當訪問完資料庫要立刻關閉串連.
舉例說明,還是看兩個程式碼片段:
I.
DataSet ds = new DataSet();
SqlConnection MyConnection = new SqlConnection("server=localhost; uid=sa; pwd=; database=NorthWind");
SqlCommand myCommand = new SqlCommand(strSql,MyConnection);
SqlDataAdapter myAdapter=new SqlDataAdapter(queryStr,connectionStr);
MyConnection.Open(); //開啟串連
for(int i=0;i<1000;i++) //for迴圈類比取得資料前的商業邏輯操作
{
Thread.Sleep(1000);
}
myAdapter.Fill(ds);
for(int i=0;i<1000;i++) //for迴圈類比取得資料後的商業邏輯操作
{
Thread.Sleep(1000);
}
MyConnection.Close(); //關閉串連
II.
DataSet ds = new DataSet();
SqlConnection MyConnection = new SqlConnection("server=localhost; uid=sa; pwd=; database=NorthWind");
SqlCommand myCommand = new SqlCommand(strSql,MyConnection);
SqlDataAdapter myAdapter=new SqlDataAdapter(queryStr,connectionStr);
for(int i=0;i<1000;i++) //for迴圈類比取得資料前的商業邏輯操作
{
Thread.Sleep(1000);
}
MyConnection.Open(); //開啟串連
myAdapter.Fill(ds);
MyConnection.Close(); //關閉串連
for(int i=0;i<1000;i++) ////for迴圈類比取得資料後的商業邏輯操作
{
Thread.Sleep(1000);
}
顯示II代碼比I代碼好的多,I中早早佔著串連不放,如果使用者很多的話,容易出現串連池滿情況。嚴重時出現死機現象.
2.資料庫查詢
I. 直接產生SQL語句。 Sql Server每次都要對其進行編譯,在效能方面不會有很大的提高。另外也不夠安全。容易被攻擊.
II. 使用帶參數的SQL命令。這種方式Sql Server只對其編譯一次,對於不同的參數可以重複使用編譯後的命令。提高了效能.
III.使用Sql Server預存程序. 編譯一次. 具有獨立性,便於修改和維護. 一次能完成用語句發送多次的功能.減少了網路的
流量。 並不一定預存程序一定比語句效率要高,如果商業邏輯很複雜的話,有時候用語句比預存程序效率要高.