C#串連SqlServer資料庫(ADO.NET)

來源:互聯網
上載者:User

標籤: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)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.