剛接觸到數據庫時總是被數據庫中的一些基本概念,比如Connection、Command、DataReader等,給整的糊里糊塗。如今,對數據庫的基本操作有了一定的認識,特此做出總結,以便后續工作中查閱。
Microsoft公司提供了幾種常見的數據源操作:Sql server數據庫,OLEDB數據源,ODBC數據源,Oracle數據庫,而針對它們的一些常規操作可以說是大同小異,本文借以對Sql server數據庫的操作進行Connection、Command、DataSet、DataAdapter、DataReader的介紹。
SqlConnection:
Sqlconnection是對象用來連接sql server數據庫的,程序員對數據庫的一切操作都是建立在數據庫已經連通的基礎上,因此對它有必要做一些基本的了解。
SqlConnection的基本語法是(拿一個連接的語句):Data Source=192.168.100.46;Initial Catalog=database;User ID=sa;Password=sa
而在實際的操作過程中經常把它放到配置文件中,以便后續進行更改,當然也可以把其基本項放到前台界面填寫操作。
放在配置文件中,參考代碼:
<?xml version="1.0"?> <configuration> <appSettings> <add key="ConnectionString" value="Data Source=192.168.100.46;Initial Catalog=database;User ID=sa;Password=sa"/> </appSettings> <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
一句話:SqlConnection是對象連接數據庫的。
SqlCommand:
在對象和數據庫建立連接后,可以使用Command對象對數據庫進行增、刪、改、查等基本操作,操作實現方式可以是使用sql語句進行,也可以是使用存儲過程。下面簡單介紹Command對象的常用屬性及其方法。
常用屬性:
CommandType:獲取或設置Command對象要執行命令的類型
CommandText:獲取或設置要對數據源執行的SQL語句、存儲過程或表名
CommandTimeOut:獲取或設置在終止對執行命令的嘗試並生成錯誤之前的等待時間
Connection:獲取或設置此Command對象使用的Connection對象的名稱
Parameters:獲取Command對象要使用的參數集合。
常用方法:
ExecuteNonQuery:執行sql語句並返回受影響的行數
ExecuteReader:執行返回數據集的select語句
ExecuteScalar:執行查詢,並返回查詢所返回的結果集中第一行第一列
一句話:SqlCommand是需要對數據庫做出改變或調整時使用的,使用后(除查詢)數據庫會有變化。
DataSet:
DataSet是數據庫操作過程中的核心對象,支持斷開式、分布式數據方案的核心對象。DataSet對象是創建在內存中的集合對象,它可以包含任意數量的數據表,以及所有的表的約束、索引、和關系,就相當於一個小型關系的數據庫。而一個dataset對象包含一組DataTable對象,這些對象可以與數據相關聯,其中每個dataTable對象都是由DataColumn和DataRow對象組成的。
對DataSet的常見操作:
以編程方式在DataSet中創建dataTable、DataRelation、Constraint,並使用數據填充表
通過DataAdapter填充dataSet
使用XML加載和保持DataSet內容
一句話:DataSet是一個保存數據的小型數據庫,支持斷開數據庫連接后的操作。
DataAdapter:
DataAdapter對象是DataSet對象和數據源之間聯系的橋梁,主要是從數據源中檢索數據、填充DataSet對象中的表或者把用戶對DataSet做出的更改寫入到數據庫中。
常用屬性:
selectCommand:獲取或設置用於在數據源中選擇記錄的命令
InsertCommand:獲取或設置用於將新的記錄插入到數據庫中命令
UpdateCommand:獲取或設置用於更新數據源中記錄的命令
DeleteCommand:獲取或設置用於從數據集中刪除記錄的命令
常用方法:
Fill:從數據源中提取數據以填充數據集
Update:更新數據源
一句話:DataAdapter對用於連接dataSet和數據源的。
DataReader:
DataReader是一個簡單的數據集,用於從數據源中檢索只讀數據集,常用於檢索大量數據。DataReader每次讀取數據時只在內存中保留一行記錄,開銷非常小。
可以從Command對象的ExecuteReader方法從數據源中檢索數據來創建DataReader對象。如:SqlDataReader sdr = cmd.ExecuteReader()
常用方法:
FieldCount:獲取當前行的列數
RecordsAffectde:獲取執行SQL語句所更改、添加或刪除的行數
常用方法:
Read:使用DataReader對象前進到下一條記錄
Close:關閉DataReader對象
Get:用來讀取數據集的當前行的某一列記錄
一句話:DataReader每次讀取數據源時在內存中保留一行記錄。
綜合運用:
在實際項目開發中使用三層架構操作數據庫,而最底層直接操作數據庫會將上述所講的一些基本概念綜合運用,這里選擇最常用到的兩個方法以供參考:
connectionString:數據庫連接語句
SQLString:sql語句
//執行查詢語句,返回dataset
public static DataSet Query(string strSql) { using (SqlConnection conn = new SqlConnection(connectionString)) { DataSet ds = new DataSet(); try { conn.Open(); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(strSql, conn); sqlDataAdapter.Fill(ds, "ds"); } catch (SqlException ex) { throw new Exception(ex.Message); } return ds; } }
//執行sql語句,返回影響的記錄數
public static int ExecuteSql(string strSql) { using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand(strSql, conn)) { try { conn.Open(); int rows = cmd.ExecuteNonQuery(); return rows; } catch (SqlException ex) { conn.Close(); throw new Exception(ex.Message); } } } }
總結:先介紹到此處,后續如果對此有更深層的理解,再行補充。
