天天看點

ADO.Net基礎複習(一)ADO.Net基礎複習(一)

先前的一個SQL基礎複習,有點粗枝大葉,不夠具體、詳細! 複習整理的,有很多屬性和方法也沒提到,隻是說了一下常用的、基礎的屬性和方法!

一切都歸因于老師的教導有方!

注意命名空間的引入:

using System.Data;

using System.Data. OleDb;       //用于OLEDB提供器支援的資料庫

using System.Data. Odbc;        //用于ODBC資料提供器支援的資料庫的資料

using System.Data.SqlClient;   //用于sql server資料庫

五大對象:

Connection對象:建立與資料源的連接配接

Command對象:檢索,插入,删除,修改資料

DataReader對象:隻讀,隻向前的方式檢索資料

DataAdapter對象:資料庫和資料集互動的橋梁

DataSet對象:看成是駐留在記憶體中的一個小型資料庫

四種典型的連接配接類

OdbcConnection

OleDbConnection

SqlConnection

下面是以對SQL Server資料庫的操作

一、Connection對象:連接配接資料源   

1.建立Connection對象:   

string strCon="Data Source="user8\\SQLEXPRESS";Initial Catalog=studentdb";   

SqlConnection myConnection=new SqlConnection(strCon);      

2.屬性:   

(1).ConnectionString:指定連接配接資料庫所需的值字元串格式的描述   

 Data Source=服務名; Initial Catalog=資料庫名; User ID=使用者名;        Password=密碼;  //Integrated Security=True;  

如: //SQL Server驗證(注意轉義字元:\),混合驗證        

ConnectionString="Data Source=user8\\SQLEXPRESS;Initial Catalog=studentdb; User ID=sa;Passward=pws;"   

  //windows驗證

ConnectionString="Data Source="user8\\SQLEXPRESS";Initial Catalog=studentdb;     Integrated Security=true;" 

(2).State:隻讀屬性,表示連接配接狀态

(3).Pooling:當為 true 時,請求新的連接配接時從池中取出,預設是true   

(4).Connect Timeout( Connection Timeout):等待伺服器響應的時間(機關:秒). 預設值:15。   

(5).Provider:指打開資料庫的驅動程式       

3.方法:   

(1).Open()  //根據連接配接串,打開連接配接   

(2).Close() //關閉連接配接,釋放資源

4.事件:   

(1).StateChange:此事件發生在連接配接的狀态發生更改時   

(2).InforMessage:此事件發生在從資料源傳回資訊性消息或警告時

二、Command對象:執行相關指令    

1.建立Command對象:    

string strSql="";//SQL指令    

(1).SqlCommand com=new SqlCommand(strSql,connection);    

(2).SqlCommand com=connection.CreateCommand(strSql);    

2.屬性    

(1).Connection:連接配接對象    

(2).CommandText:要執行的SQL指令(SQL語句或存儲過程)    

(3).CommandType:預設值是Text,執行sql語句;并可設定為StoredProcedure,執行存儲過程;TableDirect,訓示所包含的是要通路的一個表的名稱,從此表中将取出所有的列和行    

(4).Parameters:Parameters集合    

(5).Transaction:執行指令所在的事務       

3.方法    

(1).ExecuteNonQuery():傳回執行指令受影響的行數,用于增删改操作

(2).ExecuteScalar():傳回執行sql語句的第一行第一列的值,用于查詢單列值      

(3).ExecuteReader ():傳回一個DataReader對象[隻向前、隻讀的結果集],用于查詢多個資料    

4.對于Parameters集合:    

(1).屬性:    

<1>.Count屬性:擷取集合中參數的數目;    

<3>.SqlDbType:将該屬性設定為參數的資料類型。    

設定SqlParameter對象的資料類型的方法有以下兩種。    

在DbType枚舉中選擇一個值賦給DbType屬性   

在SqlDbType枚舉中選擇一個值賦給SqlDbType屬性    

<4>.Size:設定該屬性以訓示參數大小,例如字元串參數中字元的個數。     無需為已知且具有固定大小的資料類型(例如DbType.Int32)指定大小   

<5>.Direction:設定該屬性以訓示該參數是隻輸入參數、隻輸出參數、雙向參數 還是存儲過程的傳回值。

該屬性可設定為ParameterDirection枚舉值之一:     ParameterDirection.Input、ParameterDirection.InputOutput、    ParameterDirection.Output或ParameterDirection.ReturnValue。預設方向為    ParameterDirection.Input    

<6>.Value:對于隻輸入參數或雙向參數而言,在運作該指令之前需要設定Value屬性。

對于隻輸出參數、雙向參數和存儲過程的傳回值而言,在運作該指令之後可以檢索Value屬性    

(2).方法:    

<1>.Add():将參數添加到集合中;    

<2>.Clear():從集合中移除所有參數;    

<3>.Insert():将參數插入集合中的指定索引位置;    

<4>.Remove():從集合中移除所指定的參數;    

(3).建立參數對象:    

<1>.第一種方式:     cmd.Parameters.add(new SqlParameter("@customerid","ALFKI"));    

<2>. 第二種方式 :    

SqlParameter myPara=new SqlParameter();    

myPara .ParameterName="@customerid";    

myPara.value="ALFKI";   

cmd.Parameters.Add(myPara);    

5.對于ExecuteReader ()方法傳回一個DataReader對象    

(1).DataReader的建立:sqlDataReader rdr=cmd.ExecuteReader();    

(2).屬性:    

<1>.FieldCount:字段數    

<2>.HasRows:是否有資料未讀    

<3>.IsClosed:判斷DataReader對象是否關閉    

(3).方法:    

<1>.GetValue():擷取指定字段的值    

<2>.GetOrdinal():擷取字段的序号    

<3>.Read():判斷并讀取下一條記錄    

<4>.Close():關閉對象    

還有方法:GetInt32()\GetName()\NextResult()\IsDBNull()

三、Adapter資料擴充卡對象:資料庫和資料集的橋梁(斷開環境)    

DataAdapter是和資料集(DataSet)一起使用的對象,資料庫與資料集之間起橋梁作用;專門為處理脫機資料而設計的。        

1.建立DataAdapter對象:    

string strSql="select * from studentsTb";      

(1).用查詢串和連接配接字元串    

SqlDataAdapter da=new SqlDataAdapter (strSql,strConn);    

該方式會為每個SqlDataAdapter 建立一個新的SqlConnection對象,應适當選擇。

用查詢串和連接配接對象 SqlConnection cn=new sqlConnection(strConn);                  

(2).SqlDataAdapter da=new SqlDataAdapter (strSql,cn);     

比較常用的方式    

(3).使用SqlCommand對象    

SqlCommand cmd=new SqlCommand(strSql,CN);             

SqlDataAdapter da=new SqlDataAdapter (cmd);    

已存在一個SqlCommand對象時使用.           

2.屬性:    

(1).SelectCommand:在資料源中檢索資料的資料指令    

(2).InsertCommand:在資料源中插入資料的資料指令    

(3).UpdateCommand:在資料源中更新資料的資料指令    

(4).DeleteCommand:在資料源中删除資料的資料指令    

(5).TableMappings:DataTableMapping對象的集合,決定DataSet中的行與資料源之間的關系    

(6).UpdateBatchSize:決定批程序支援,指出在批進行中可執行的指令的數量

3.方法:    

(1).Fill()    

<1>. Fill(DataSet) :DataSet結果集    

<2>. Fill(DataTable): DataTable對象    

<3>. Fill(Int32,Int32,params DataTable[]):開始記錄索引 ,要填充的資料表的行數, DataTable對象   

<4>.Fill(DataSet, Int32,Int32,String) :DataSet結果集,對象 開始記錄的索引 ,要填充的資料集的行數 ,表名    

(2).Update()

4.對于TableMappings屬性的應用    

(1).先建立SqlDataAdapter對象    

SqlDataAdapter adapter = CreateDataAdapter(conn, age);   

DataSet ds = new DataSet();     

(2).Mappings的用法   

DataTableMapping mapping = adapter.TableMappings.Add("Table", "學生表");   

mapping.ColumnMappings.Add("SNO", "學生編号");  

mapping.ColumnMappings.Add("SName", "學生姓名");  

mapping.ColumnMappings.Add("SDept", "所在院系");  

mapping.ColumnMappings.Add("SClass", "所在班級");

mapping.ColumnMappings.Add("SSex", "性别");   

mapping.ColumnMappings.Add("SAge", "年齡");       

(3).資料填充    

adapter.Fill(ds);      

(4).dataGridView綁定顯示   

dataGridView1.DataSource = ds.Tables["學生表"];//使用設定好的映射表名字  

dataGridView1.Refresh();      

5.Update()方法的應用    

(1).資料填充    

string strSql="SELECT * FROM STUDENT";     

adapter.SelectCommand = new SqlCommand(strSql, conn);                   

SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

adapter.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];      

dataGridView1.Refresh();    

更新時的代碼:

adapter.Update(ds);              

MessageBox.Show("更新成功");       

6.DataAdapter的事件    

(1).Disposed:當調用Dispose釋放元件的時候調用。    

(2). FillError:在填充操作過程中出現錯誤時傳回。    

(3). RowUpdating:在對資料源執行指令前的Update過程中發生,試圖進行更新,是以激發該事件。    

(4). RowUpdated:在對資料源執行指令後的Update過程中發生,試圖進行更新,是以激發該事件。

四、DataSet:資料集

1.DataSet 層次結構中的類:DataTable\DataColumn\DataRow\DataTableCollection\DataCloumnCollection\DataRowCollection\

2.對于DataTable對象允許通路資料集中被通路的Rows集合,有如下方法: Add()\InsertAt()\Find()\Select()\Remove()

對于DataTable對象允許通路資料集中被通路的Columns集合,有如下方法: Add()\InsertAt()\Find()\Select()\Remove()

3.建立DataTable   

//建立一個DataTable的一個執行個體。

DataTable dt = new DataTable("學生表");

//聲明列對象            

DataColumn column;               

column = new DataColumn();               

//設定列的資料類型               

column.DataType = System.Type.GetType("System.Int32");               

column.ColumnName = "學生編号";               

column.ReadOnly = true;               

column.Unique = true;               

//向DataTable添加該列               

dt.Columns.Add(column);

//建立一個新行   

row = dt.NewRow();              

//為建立立的行添加資料               

row["學生編号"] = Convert.ToInt32(txtID.Text.ToString());               

row["學生姓名"] = txtName.Text;

//為該表添加指定的行              

dt.Rows.Add(row);

//綁定資料為DataGridView              

dataGridView1.DataSource = dt;              

dataGridView1.Refresh();

4.DataTable的Select方法 三個參數:

(1). String:篩選條件

(2).String:排序表達式

(3).RowStateValue:一個值,訓示要以什麼版本或狀态進行篩選。這是一個枚舉值。如 :DataViewRowState.CurrentRows。

示例代碼:  

DataTable dataTable = new DataTable("學生表臨時");       

dataTable = dt.Clone();

string expression = "學生編号 = " + Convert.ToInt32(txtID.Text.ToString());              

//按照條件篩選資料              

DataRow[] foundRows = dt.Select(expression);

//周遊查詢出來的結果并将其綁定到DataGridView2上。            

foreach(DataRow dr in foundRows)            

{                  

  DataRow dataRow = dataTable.NewRow();                  

  dataRow[0] = dr[0];                  

 dataRow[1] = dr[1];

 dataTable.Rows.Add(dataRow);          

}

 //綁定資料為DataGridView              

dataGridView2.DataSource = dataTable;              

dataGridView2.Refresh();

5.DataTable對象的SELECT方法的功能非常強大,但它效率低,windows web窗體都不支援綁定到select方法的傳回值,dataView類能彌補select的局限性. DataView屬性:

(1).RowFilter:此屬性用來指定用來過濾記錄的字元串格式的表達式/條件。滿足條件的記錄将隻被包括在視圖中。

(2).RowStateFilter:此屬性指定此 DataView 傳回的資料的版本。

(3).Sort:此屬性用來指定将按其排序記錄的表達式。表達式包括列名稱和排序限定符,其為 ASC 或 DESC,以升序或降序來顯示記錄。   

本文轉自SanMaoSpace部落格園部落格,原文連結:http://www.cnblogs.com/SanMaoSpace/archive/2011/11/15/2250375.html,如需轉載請自行聯系原作者