標籤:datagridview style blog color io os 使用 ar strong
ADO.NET
向.NET程式員公開資料訪問服務的類,用於對Microsoft SQL Server和XML 等資料來源進行訪問,還提供對OLE DB和XML公開的資料來源提供一致訪問的方法。
兩種訪問資料的模型:無串連模型(離線)和串連模型(聯機)。
無串連將資料下載到客戶機上,並在客戶機上將資料封裝到記憶體中,然後可以像訪問本地關聯式資料庫一樣訪問記憶體中的資料(如DataSet)。
串連模型則依賴於逐記錄的訪問,這種訪問要求開啟並保持資料來源的串連。
聯機時使用Connection、Command、DataAdapter
離線時使用Connection、Command、DataAdapter、Dataset
ADO.NET的核心對象
·Connection(串連),用來建立與特定資料來源的串連
·Command(命令),用來對資料來源執行SQL命令語句或預存程序
·DataReader(資料閱讀器),用來從資料來源中擷取唯讀、向前的資料流
·DataAdapter(資料配接器),用來在資料來源和資料集之間交換資料
·DataSet(資料集),用來處理從資料來源讀出的資料,表示資料在記憶體中的緩衝
使用Connection對象串連資料庫
主要成員:
·ConnectionString屬性 連接字串,用於擷取或設定串連到資料庫的資訊
·Open()方法 使用ConnectionString所指定的屬性設定來開啟資料庫連接
·Close()方法 關閉資料庫的串連
·StateChange事件 當串連狀態更改時觸發該事件
Connection對象的使用步驟:
⑴·引入ADO.NET命名空間
⑵·建立Connection對象,並設定其ConnectionString屬性
⑶·開啟與資料庫的串連
⑷·對資料庫進行讀寫操作
⑸·關閉與資料庫的串連
·⑴引入ADO.NET命名空間
SQL Server資料提供者 System.Data.SqlClient
ODBC資料提供者 System.Data.Odbc
OLE DB資料提供者 System.Data.OleDb
Oracle資料提供者 System.Data.OracleClient
⑵·建立Connection對象,並設定其ConnectionString屬性
如果使用SQL Server身分識別驗證,則連接字串通常為:
Data Source=伺服器名;Initial Catalog=資料庫名;User ID=賬戶;Password=密碼
如果使用Windows身分識別驗證,則連接字串通常為:
Data Source=伺服器名;Initial Catalog=資料庫名;Integrated Security=SSPI或
Data Source=伺服器名;Initial Catalog=資料庫名;Trusted Connection=yes
伺服器名:是指資料庫所在的伺服器名稱,也可以寫成IP地址;如果是本機伺服器,可以寫成“.”“(local)”“127.0.0.l”或“本地機器名稱”
·SqlConnection 連線物件名=new SqlConnection();
連線物件名.ConnectionString=連接字串;
·連接字串變數=連接字串;
SqlConnection 連線物件名 =new SqlConnection(連接字串變數);
例:
SqlConnection conn=new SqlCounnection(); conn.ConnectionString=”Data Source=(local);Initial Catalog=StudentRecord;Integrated Security=SSPI”;或strConn=”Data Source=.;Initial Catalog=StudentRecord;Trusted_Connection=yes”;SqlConnection conn=new SqlConnection(strConn);
連線物件名.State :
Broken 與資料來源的串連斷開
Closed 串連處於關閉狀態
Connecting 連線物件正在與資料來源串連
Executing 連線物件正在執行命令
Fetching 連線物件正在檢索資料
Open 串連處於開啟狀態
·conn.State==ConnectionState.Open
開啟與關閉資料庫連接
設定好ConnectionString屬性之後
連線物件名.Open();
連線物件名.Close();
連線物件名.Dispose();這種關閉不能再用Open開啟
StateChange事件
串連狀態更改時發生。該事件的處理常式接收一個StateChangeEventArgs類型的參數
有兩個屬性:CurrentState:用於擷取串連的新狀態
OriginalState:用於擷取串連的原始狀態
使用Command對象執行SQL語句
向資料庫發送SQL命令。如果是檢索命令,那麼從資料庫取回的資料,可以放在DataAdapter或DataReader對象中。
Command主要成員:
Connection屬性:擷取或設定Command對象使用的Connection對象
CommandType屬性:StoredProcedure 預存程序的名稱
TableDirect:表的名稱
Text:SQL文本命令
CommandText屬性:擷取或設定要對資料庫執行SQL命令
ExecuteNonQuery()方法:執行不返回行的SQL命令(Insert、Delete、Update), 並返回受影響的行數。
ExecuteReader()方法:執行Select命令,並返回一個產生的DataReader對象
ExecuteScalar()方法:執行Select命令,並返回查詢所得的結果集中第一行的第 一列{單個值},忽略其他列或行,如果結果為空白則返回 null引用,通常用於統計記錄數、總和、平均數
Command對象使用一般步驟:
·建立Command對象,並設定其Connection屬性
·設定CommandType和CommandText屬性
·調用回應程式法來執行SQL命令
·根據返回結果進行適當處理
建立並使用SqlCommand對象
·第一種
SqlCommand 命令對象名=new SqlCommand();
命令對象名.Connection=連線物件名;
命令對象名.CommandType=CommandType.枚舉成員;
命令對象名.CommandText=命令文本;
方法傳回值變數=命令對象名.Execute....();
·第二種
SqlCommand 命令對象名=new SqlCommand(命令文本,連線物件名);
命令對象名.CommandType=CommandType.枚舉對象;
方法傳回值變數=命令對象名.Execute....();
例:
SqlCommand comm=new SqlCommand(“select count(*) from studentInfo”,conn); //conn是之前設定好的SqlConnection對象int iCount= comm.ExecuteScalar();MessageBox.Show(“studentInfo表中共有”+iCount.ToString()+”條記錄”);註:ExecuteScalar()通常與彙總函式一起使用
使用DataReader對象讀取資料
DataRead讀取行的只進流的聯機資料訪問方式,DataRead資料是由資料庫返回的唯讀、只能向下滾動的流資訊,因此很適合應用在只需讀取一次的資料。
主要成員:
FieldCount屬性:擷取當前行中的列數,預設值為-1;如果未放在有效記錄集,
則為0
HasRows屬性:擷取一個值,用於指示DataReader對象是否包含一行或多行
IsClosed屬性:擷取一個值,用於指示DataReader對象是否已關閉
RecordsAffected屬性:擷取執行SQL語句所更改、插入或刪除的行數;如果執
行的是Select語句,傳回值為-1
Close()方法:關閉DataReader對象,每次用完都應該調用Close方法
GetName(int index)方法:擷取指定列的名稱;參數i為從0開始的列序號
GetOrdinal(string name)方法:在給定列的名稱的情況下擷取列序號;參數name 為列名稱
GetValue(int i)方法:擷取以原生格式表示的指定列的值,該值為object類型;參 數i為從0開始的列序號
NextReault()方法:當讀取批處理SQL語句的結果時,使資料讀取器前進到下一
個結果集,傳回值為布爾型,如果存在多個結果集,則為true
Read()方法:使資料前進到下一個記錄;傳回值為布爾型,如果還有記錄,則true
例:SqlDataReader reader=comm.ExecuteReader(); //SqlConnection對象已設定好並開啟,comm是之前設定好的SqlCommand對象 while(reader.Read()) {//讀取一行資料}
資料配接器:DataAdapter對象
在DataSet與資料來源之間起到橋樑作用。
屬性:
SelectCommand:向資料庫發送查詢SQL語句。
DeleteCommand:向資料庫發送刪除SQL語句。
InsertCommand:向資料庫發送插入SQL語句。
UpdateCommand:向資料庫發送更新SQL語句。
主要的方法:
Fill方法:主要用於填充DataSet資料集
public int Fill(DataSet dataSet,string scTable);
dataSet:記錄和架構填充的DataSet
srcTable用於表映射和源表的名稱
傳回值:已在DataSet中成功添加或重新整理的行數
Update方法:更新資料庫
填充DataSet資料集
SqlConnection conn;conn=new SqlConnection(“server=.;database=db_14;uid=sa;pwd=”);SqlCommand cmd=new SqlCommand(“select *from tb_command”,conn);SqlDataAdapter sda=new SqlDataAdapter();sda.SelectCommand=cmd;DataSet ds=new DataSet();sda.Fill(ds,”tb_XX”);dataGridView1.DataSource=ds.Table[0];
更新資料來源:
DataTable dt=ds.Tables[“tb_XX”];sda.FillSchema(dt,SchemaType.Mapped);DataRow dr=dt.Rows.Find(txtNo.Text);dr[“姓名”]=txtName.Text.Trim();dr[“性別”]=txtSex.Text.Trim();dr[“年齡”]=txtAge.Text.Trim();dr[“獎金”]=txtjj.Text.Trim();SqlCommandBuilder cmdbudider=new SqlCommandBuilder(sda);sda.Update(dt);
資料集:DataSet對象
合并資料集:ds1.Merge(ds,true,MissingSchemaAction.AddWithKey);
複製DataSet:DateSet ds1=ds.Copy();
dataGridView2.DataSource=ds1.Table[0];
C#串連SqlServer資料庫(ADO.NET)