ADO.NET基礎_使用ADO.NET訪問和操作數據庫
作者:田超凡
版權所有,轉載請註明原作者,仿冒侵權必究法律責任
※開始本章的學習之前,你需要回顧和掌握的知識點:
1.ADO.NET兩大核心組件是什麼?
.NET Framework數據提供程序和DataSet數據集
2..NET Framework數據提供程序中的四大核心對象有哪些?
在SQL Server數據提供程序中哪個命名空間中?四大核心對象在SQL Server數據提供程序中的類名分別是什麼?
Connection建立和數據庫的連接
Command執行命令
DataReader讀取只讀只進的數據流
DataAdapter數據適配器,建立數據庫和數據集之間的關係。
位於System.Data.SqlClient命名空間中
SqlConnection/SqlCommand/SqlDataReader/SqlDataAdapter
3.Connection對象和Command對象的作用是什麼?屬性和方法有哪些?
Connection對象的作用是建立應用程序和數據庫的連接,方便訪問和操作數據庫中的數據
Connection對象的屬性:
ConnectionString連接字符串
方法:
void Open();
void Close();
Command對象的作用是對數據庫中的數據執行增刪改查命令,對數據庫中的數據進行操作
屬性:
Connection已經定義好的Connection對象
CommandText 需要執行的T-SQL語句
方法:
Int ExecuteNonQuery()返回受影響的行數
DataReader ExecuteReader()返回DataReader對象
Object ExecuteScalar()返回查詢的單個值
4.異常和編譯錯誤的區別是什麼?
在編譯時發生的錯誤就是編譯錯誤,在運行時發生的錯誤就是異常。一般來說,語法如果出現錯誤就會觸發編譯錯誤,如果語法沒有錯誤,但是可能由於沒有顯式地執行或取消某些操作而造成程序運行時發生的錯誤就是異常。
5.異常處理的關鍵字有哪些?執行流程是怎樣的?
try-catch-finally
首先執行try塊中的語句,如果沒有發現異常,則執行完try塊中的語句後再執行finally塊中的語句。如果在執行try塊語句的過程中發現了異常,則將會終止try塊語句的執行,直接跳進catch塊中(捕獲到了異常)執行catch塊中的語句,然後再執行finally塊中的語句。總的來說,在進行異常處理時,finally塊中的語句不論程序是否發生異常在最後都要執行,程序在執行完try塊或catch塊中的語句後總會將控制權傳遞給finally塊,與try塊的退出方式無關。
6.SQL Server數據提供程序中和數據庫建立連接的連接字符串是什麼?
“Data Source=服務器名;Initial Catalog=數據庫名;User ID=用戶名;Pwd=密碼(如果密碼爲空,則此項可以不設置)”
7.Connection對象和Command對象創建時需要傳遞的參數是什麼?這些參數的意義分別是什麼?
Connection對象在創建時需要將已經定義好的連接字符串作爲實參傳入,Command對象在創建時需要將需要執行的SQL語句字符串和已經定義好的Connection對象作爲實參傳入。順序不能顛倒。
※學習完本章後,你需要理解和掌握的知識點:
1.String類和StringBuilder類分別位於哪個命名空間中?二者有什麼區別?StringBuilder類的常用屬性和方法有哪些?
2.DataReader對象的作用是什麼?有哪些屬性和方法?Read()方法的作用是什麼?在SQL Server數據提供程序中位於哪個命名空間中?
3.如何對數據庫中的數據進行增刪改操作?需要用到什麼對象以及哪些方法?
4.總結ADO.NET的幾個核心對象、以及他們的作用和執行流程是怎樣的?
※對照下面的我的一些個人總結看看有沒有掌握:
1.String類是不可變字符串,也就是說一經定義,其值不可改變,雖然我們在以前使用String類的一些方法對字符串進行連接或插入等操作時會有不同的輸出結果,但是實際上每聲明或使用一次String類的字符串,都會重新在內存中分配一塊獨立的存儲空間,降低系統性能。StringBuilder類便完美的解決了這個問題。StringBuilder類是可變字符串,使用StringBuilder類可以重複修改字符串而又不需要重新創建新的對象(分配新的存儲空間),並且StringBuilder類提供了對連接字符串的一些實用方法,並且當使用StringBuilder類對字符串進行拼接操作時,其執行效率遠遠高於String類。String類位於System.String命名空間中,StringBuilder類位於System.Text命名空間中。
StringBuilder類常用屬性和方法:
屬性:
Capacity 獲取當前對象分配的內存中的最大字符數
Length 獲取當前對象的長度
方法:
Append(string value)在結尾追加指定字符串
AppendFormat(string format,Object arg0,Object arg1)在結尾追加指定格式的字符串
Insert(int index,string value)在指定位置插入指定字符串
Remove(int startIndex,int length)移除指定字符串
2.
DataReader對象的作用是讀取只進且只讀的數據流。
屬性:
HasRows查到結果返回true,沒有查到結果返回false
FieldCount獲取當前行中的列數
方法:
bool Read()前進到下一行記錄中,讀到記錄返回true,沒有讀到記錄返回false
void Close()關閉DataReader對象
DataReader對象在SQL Server數據提供程序中位於System.Data.SqlClient命名空間中
3.
對數據庫中數據進行增刪改操作時,除了需要已經使用Connection對象建立了和數據庫的連接外(斷開連接機制除外)需要用到Command對象的ExecuteNonQuery()方法執行諸如增刪改這些不返回行的語句,並返回受影響的行數。
4.
ADO.NET小結
到目前爲止,我們已經學習了ADO.NET的兩大核心組件之一:.NET Framework數據提供程序中的四大核心對象中的三個核心對象。現對於本階段所學習的使用ADO.NET訪問和操作數據庫中數據做以小結:
四大核心對象:
Connection建立和數據庫的連接
Command執行命令
DataReader讀取只讀只進的數據流
DataAdapter數據適配器,建立數據庫和數據集之間的關係,通過Fill()方法將數據庫中的數據填充到數據集中,通過Update()方法將數據集中的數據提交到數據庫
本階段重點學習了前面三個核心對象位於SQL Server數據提供程序中的操作流程和注意事項:
執行流程一般如下:
- 引入System.Data.SqlClient命名空間
- 定義連接字符串
- 創建SqlConnection對象,並將已經定義好的連接字符串作爲實參傳入
- 調用Connection對象的Open()方法打開連接
- 編寫需要執行的T-SQL語句(建議使用StringBuilder類的拼接字符串的方法對需要執行的T-SQL語句進行字符串拼接,效率更高)
- 創建SqlCommand對象,將已經定義好的需要執行的SQL語句字符串和已經定義好的SqlConnection對象作爲實參傳入,實參的先後順序不能顛倒,第一個參數是需要執行的SQL語句字符串,第二個實參是已經定義好的SqlConnection對象
- 調用Command對象的方法執行命令
增刪改:
int ExecuteNonQuery()
查:
一次查詢一個結果:Object ExecuteScalar()
一次查詢多個結果:DataReader ExecuteReader()
(8)如果使用了DataReader對象,則應該先調用DataReader對象的Close()方法關閉該DataReader對象,然後調用Connection對象的Close()方法關閉數據庫的連接