快速上手ADO.NET數(shù)據(jù)庫運用
#T#經(jīng)過長時間學(xué)習(xí)ADO.NET數(shù)據(jù)庫,在網(wǎng)上也收集了許多資料,看完本文你肯定有不少收獲。首先***個要說的是DBConnection,它的作用是相當(dāng)于在程序與數(shù)據(jù)庫服務(wù)器之間建立一條的通路,因此缺少了它,那么所有對數(shù)據(jù)庫的操作都變成空談。在對DBConnection對象進(jìn)行操作的時候,要注意如下幾點:
設(shè)置ConnectionString(連接字符串),這好比選擇路徑的方向,如果方向不對,則無法建立通路。對于不同數(shù)據(jù)庫,其連接字符串設(shè)置也不同,以下列舉說明。ADO.NET數(shù)據(jù)庫連接字符串:
- SQL Server
- data source=數(shù)據(jù)庫服務(wù)器名;
- initiacatalog=數(shù)據(jù)庫名;
- user id=連接用戶名;
- password=密碼;
- Access
- Provider=Microsoft.JET.OLEDB.4.0;
- data source=數(shù)據(jù)庫文件名(指明路徑);
- user id=Admin;Jet OLEDB:Database Password=密碼;
備注:“Jet OLEDB:Database Password=密碼;”這部分是可選的,即如果沒有密碼的話,去掉這部分即可。
調(diào)用Open與Close方法,來打開數(shù)據(jù)庫連接和關(guān)閉數(shù)據(jù)庫連接,由于數(shù)據(jù)庫連接會出現(xiàn)異常,因此要用TRY-CATCH來進(jìn)行捕獲。通過State屬性來查看當(dāng)前數(shù)據(jù)庫連接的狀態(tài)。例如:假如在一段時間內(nèi)不操作數(shù)據(jù)庫,數(shù)據(jù)庫連接很有可能會被系統(tǒng)關(guān)閉,因此在每次數(shù)據(jù)庫操作的時候,***先判斷一下數(shù)據(jù)庫連接的State屬性,例如在SQL Server中可以如下:
- if(sqlConn.State==ConnectionState.Closed||sqlConn.State==ConnectionState.Broken)
- //Connection is not available
- return false;
- else
- //Connection is available
- return true;
當(dāng)ADO.NET數(shù)據(jù)庫 可以連接是通的情況下,再進(jìn)行數(shù)據(jù)庫操作。接下來就要說說DBCommand這個類,所有對數(shù)據(jù)庫的操作都是通過它進(jìn)行完成的。如果把DBConnection比作通路的話,那么 DBCommand就是在這條通路上來回跑動的車輛。缺少了它,在程序中所有對數(shù)據(jù)庫的操作無法傳遞給ADO.NET數(shù)據(jù)庫服務(wù)器端。因此可以說,DBConnection和DBCommand組成ADO.NET的基礎(chǔ)。在對DBCommand對象進(jìn)行操作的時候,需要注意如下幾點。
設(shè)置CommandText和CommandType屬性,一般情況下是不需要設(shè)置CommandType屬性,但是如果執(zhí)行存儲過程,則需要設(shè)置CommandType屬性為StoredProcedure.建議多使用參數(shù),而減少字符串的拼接,這樣一是可以減少程序書寫錯誤,而可以避免語句蛀蟲。參數(shù)的使用可以如下:
- SqlCommand myComm = new SqlCommand();
- myComm.CommandText = “SELECT * FROM UserInfo WHERE UserName = @UserName ”;
- myComm.Parameters.Add( “@UserName”, yourValue );
區(qū)分ExecuteNonQuery方法和ExecuteReader方法,前者是主要是處理非查詢類型的語句,返回的個數(shù)是受影響的個數(shù),但其對“INSERT”語句是不起任何作用的;而后者主要是處理查詢語句,但是需要借助DataReader來輔助操作。***不要忘了在用完后,調(diào)用Dispose方法對DBCommand對象進(jìn)行釋放。