国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
C#數(shù)據(jù)庫操作

   數(shù)據(jù)庫在程序設(shè)計中的地位越來越來高,很有必要掌握這種編程方法。雖然要想在短時間內(nèi)完全掌握數(shù)據(jù)庫編程是很有難度的,但我們可以首先掌握基本的知識,其他的復(fù)雜的技術(shù)其實(shí)是在這些基礎(chǔ)知識上多次迭代而產(chǎn)生的。下面我們來分篇介紹基本的數(shù)據(jù)庫的知識。這里介紹的是ADO.net(ADO和它是差不多的)。

 

 

訪問數(shù)據(jù)庫的方法有很多,這里介紹的是ADO.NET技術(shù)。

      1. 連接和關(guān)閉數(shù)據(jù)庫

首先要連接數(shù)據(jù)庫,可以通過ADO.NET connection對象來連接數(shù)據(jù)庫。ADO.NET

好幾個connection對象,例如:OleDbConnection 對象(用于訪問通過傳統(tǒng)ADO訪問的OLE DB數(shù)據(jù)提供者)和SqlConnection對象(提供隊SQL Server的優(yōu)化訪問)。如果要訪問的數(shù)據(jù)庫是SQL Server就用后一個對象,否則就用前面一個對象。使用連接對象之前必須要包含相應(yīng)的命名空間。

using System.Data.OleDb;

在建立連接對象實(shí)例之前,必須先要填充連接對象的ConnectionString屬性,這個屬性包含了多個參數(shù):

   Provider  數(shù)據(jù)庫提供者的名稱

   Data Source  數(shù)據(jù)源,即數(shù)據(jù)庫的路徑

   User ID   用戶名

   Password  密碼

   DRIVER  數(shù)據(jù)庫驅(qū)動器的名稱,如果指定了DSN就不要這個參數(shù)了

   SERVER   數(shù)據(jù)源服務(wù)器的網(wǎng)絡(luò)名稱

這個屬性初始化的格式是:(假定連接的事Access數(shù)據(jù)庫,數(shù)據(jù)庫文件在C : \temp目錄下)

m_cnADONetConnection.ConnectionString =

  @” Provider = Microsoft.Jet.OLEDB.4.0;Data Source = C : \temp\contacts.mdb;

     User ID = zlw ;Password = 123456 ”

其他類型的數(shù)據(jù)庫的提供者信息需查閱相關(guān)資料。

連接對象的屬性設(shè)置好后,就可以創(chuàng)建實(shí)例對象了:

m_cnADONetConnection = new OleDbConnection();

接下來,可以打開數(shù)據(jù)庫了:

m_cnADONetConnection.Open();

數(shù)據(jù)庫使用完畢后要關(guān)閉連接,釋放資源:

m_cnADONetConnection.Close();

m_cnADONetConnection.Dispose();

 

2.操作數(shù)據(jù)庫

A.使用sqlcommand OleDbCommand類來執(zhí)行sql語句。

   連接數(shù)據(jù)庫后就可以創(chuàng)建一個語句命令對象,然后執(zhí)行這個語句。

   OleDbCommand str = new OleDbCommand(select * from texts , m_cnADONetConnection);

Str.ExecuteScalar();               //執(zhí)行這個語句

oleDbDataReader daOle = Str.ExecuteReader();               //返回對象

daOle.FieldCount;          //返回查詢結(jié)構(gòu)當(dāng)前行的列數(shù)

daOle.GetString(i);      //返回當(dāng)前行第i列的字符串形式

daOle.Read();        // 前進(jìn)到下一條記錄

Sql語句的執(zhí)行函數(shù)有很多種 , 其中最有用的是ExecuteReader()這個函數(shù),這個函數(shù)返回一個OleDbDaraReader類對象,這個對象包含語句的查詢結(jié)果,其中有很多方法可以對數(shù)據(jù)進(jìn)行操作。

 

 

B.對數(shù)據(jù)庫進(jìn)行操作,最好的方法是創(chuàng)建DataTable對象,這個對象是數(shù)據(jù)源中數(shù)據(jù)的一個快照,可以先對DataTable進(jìn)行操作,然后再將修改的快照返回數(shù)據(jù)庫,以實(shí)現(xiàn)數(shù)據(jù)的更新。

在使用DataTable之前先要填充這個對象,這里利用DataAdapterFill方法。先構(gòu)造對象:

OleDbDataAdapter m_daDataAdapter = new OleDbDataAdapter

(“Select * From Contacts” ,  

                           m_cnADONetConnection);

參數(shù)1指定拷貝到DataTable中的數(shù)據(jù),參數(shù)2指定連接對象。

為了使DataTable能對數(shù)據(jù)進(jìn)行操作,此時還應(yīng)該建立一個CommandBuilder對象,這個對象建立后,并不用主動調(diào)用它,只要將它和DataAdapter關(guān)聯(lián)起來,就可以在幕后對數(shù)據(jù)進(jìn)行操作了。

OleDbCommandBuilder m_cbCommandBuilder =  new

                                      OleDbCommandBuilder(m_daDataAdapter);

準(zhǔn)備工作完成后就應(yīng)該創(chuàng)建并填充DataTable了:

      DataTable m_dtContacts = new DataTable();

      m_daDataAdapter.Fill(m_dtContacts);

 

    DataTable可以看成是一個集合,我們可以通過它來直接操作數(shù)據(jù)庫中的表。如:

   訪問指定行中的指定列的數(shù)據(jù),可以通過語句:

     m_dtContacts[“行號”][“列名”] = “” ; //j將指定位置的數(shù)據(jù)修改

   字符串變量 = m_dtContacts[“行號”][“列名”] ; //取得指定位置的數(shù)據(jù)

    //在表中增加一行

     DataRow drNewRow = m_dtContacts.NewRow();

     drNewRow[“第一列名”] = str ;

     drNewRow[“第二列名”] = str;

        ……

     m_dtContacts.Rows.Add(drNewRow) ;

    //刪除一行

     m_dtContacts.Rows[“行號”].Delete();

 

在對內(nèi)存數(shù)據(jù)庫DataSet進(jìn)行修改處理后必須調(diào)用下面語句,才能反映到物理數(shù)據(jù)庫中:

      m_daDataAdapter.Update(m_dtContacts) ;

 

   上面介紹的修改是通過修改DataSet,然后同步物理數(shù)據(jù)庫的修改。還有一種方法是通過修改物理數(shù)據(jù)庫,然后同步DataSet。這種方法是通過SQL語句來修改物理數(shù)據(jù)庫,然后更新DataSet來同步。具體代碼為:

string strDele = "DELETE FROM Contacts where 條件 ;

OleDbCommand myCommand = new OleDbCommand ( strDele , myConn ) ;

file://從數(shù)據(jù)庫中刪除指定記錄

myCommand.ExecuteNonQuery ( ) ;  // 執(zhí)行SQL語句

file://DataSet中刪除指定記錄 ,同步操作

myDataSet.Tables [ " Contacts " ] . Rows [ 行號 ] . Delete ( ) ;

myDataSet.Tables [ " Contacts " ] . AcceptChanges ( ) ;

 

 

 

3.綁定數(shù)據(jù)庫

    在c#中任何一個從Control類派生來的類均可以綁定數(shù)據(jù)源。綁定數(shù)據(jù)源必須要用到DataSet,這個類和DataTable類的區(qū)別就像數(shù)據(jù)庫中表和數(shù)據(jù)庫的區(qū)別,一個DataSet可以包含多個DataTable,在我們用DataAdapter填充DataTable時,也可以填充DataSet,其語法為:

DataSet ds = new DataSet();

m-daDataAdapter。Fillds   “Contacts”); // Contactsds關(guān)聯(lián)的表名

在有了ds后就可以進(jìn)行數(shù)據(jù)的綁定了

textBox1.DataBindings.Add ( "Text" , ds , "Contacts。列名" ) ; 

這句代碼將表Contacts中的某列的當(dāng)前行綁定在textBox1上。“Text”是數(shù)據(jù)類型。

使用這種方法也可以將表中某列綁定到其他的簡單控件上。

當(dāng)要將數(shù)據(jù)綁定到復(fù)雜控件上,必須使用以下代碼:

ComboBox1.DataSource = ds ;
ComboBox1.DisplayMember = " Contacts
。列名
" ;
ComboBox1.ValueMember = " Contacts
。列名" ;

這種綁定將一列綁定在了ComboBox1上了,我們也可以使用上面的方法將某列中的某行綁定在ComboBox1上。

在控件的容器Form中還有一個BindingManagerBase類對象,這個對象是用來關(guān)聯(lián)關(guān)聯(lián)到此窗口的DataSet的,利用下面語句可以關(guān)聯(lián)這兩個對象:

BindingManagerBase bmb = this . BindingContext [ ds , "Contacts" ] ;

現(xiàn)在可以利用bmb來操作ds,其中bmb中的Position成員是用來指定ds表中的當(dāng)前行的,可以對它進(jìn)行賦值,改變ds表的當(dāng)前行,這樣可以改變綁定到此ds的空間中顯示的值。

 

對于DataSetDataTable是我們在內(nèi)存中建立的數(shù)據(jù)庫表的拷貝,其實(shí)沒有數(shù)據(jù)庫我們也可以在內(nèi)存中建立一個這樣的快照,其語法為:

DataSet ds = new DataSet();        // 建立一個空數(shù)據(jù)庫

DataTable dt =  ds2.Tables.Add("mdb");  //建立一張表

dt.Columns.Add("01"typeof(string));   //添加一列

dt.Columns.Add("02"typeof(string));   //再添加一列

DataRow dr2 = ds2.Tables["mdb"].NewRow();  //添加一個新行

dr2[0] = "1";   //為行賦值

dr2[1] = "2";

ds2.Tables["mdb"].Rows.Add(dr2) ;    //將行添加到表中

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C#將xml轉(zhuǎn)化為datatable的代碼
C#
先利用DataSet更改數(shù)據(jù),再將更改保存到數(shù)據(jù)庫中
SqlCommand和SqlDataAdapter的區(qū)別
DataGridView的添加、編輯、更新 - 太上老君的日志 - 網(wǎng)易博客
c# 數(shù)據(jù)庫操作類sql server篇
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服