小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

SqlCommandBuilder的作用

 行走在理想邊緣 2019-08-09

最近看一個案例,關(guān)于如何向數(shù)據(jù)庫傳數(shù)據(jù),頗有發(fā)現(xiàn)。

以前我的數(shù)據(jù)都是采用Sql代碼用SqlCommand一條一條語句的傳入數(shù)據(jù)庫。

但是今天發(fā)現(xiàn)有更好的方法。

代碼如下:

SqlConnection cn=new SqlConnection(ConStr);

   DataSet DS=new DataSet();

   SqlDataAdapter Sda=new SqlDataAdapter("Select * from Table1",cn);

   try

   {

    Sda.Fill(DS,"Table1");

    MessageBox.Show(DS.Tables[0].Rows.Count.ToString());

   }

   catch(Exception er)

   {

    MessageBox.Show(er.Message);

   }

   //DataSet DS2=DS.Clone();

   //Sda.SelectCommand=new SqlCommand("Select * from Table1");

   DataRow dr=DS.Tables[0].NewRow();

   dr["F1"]=5;

   dr["F2"]=5;

   dr["F3"]=5;

   DS.Tables[0].Rows.Add(dr);

   dr=DS.Tables[0].NewRow();

   dr["F1"]=6;

   dr["F2"]=6;

   dr["F3"]=6;

   DS.Tables[0].Rows.Add(dr);

   SqlCommandBuilder SCB=new SqlCommandBuilder(Sda);

   try

   {

    Sda.Update(DS,"Table1");

   }

   catch(Exception er)

   {

    MessageBox.Show(er.Message);

   }

   Sda.Dispose();

   cn.Close();

數(shù)據(jù)庫用的是SQL2000,先在數(shù)據(jù)庫中建立Table1的臨時表,建立字段MainID,F1,F2,F3

初始數(shù)據(jù)如下

MainID     F1    F2    F3

1                1        1    1

2                2        2    2

3                3        3    3

4                4        4    4

注意到,我先把數(shù)據(jù)從數(shù)據(jù)庫中讀出來,賦值到DS中

結(jié)果顯然為4行

然后我在該數(shù)據(jù)集DS中添加2個同構(gòu)行

這是注意了,我沒有做任何的Insert相關(guān)語句

打算直接采用SqlDataAdapter.Update(DataSet,TableScr)方法

但是注意,直接用是不行的,會提示缺少Insert命令的關(guān)聯(lián)

這是可以用了如黃色高亮標(biāo)記的語句

SqlCommandBuilder SCB=new SqlCommandBuilder(Sda);

這是所有關(guān)聯(lián)就都建立好了,全自動。奇妙,詭異阿

這樣就方便多了。

恩,更多的相關(guān)功能正在研究中。

 =============================================================

使用SqlCommandBuilder與SqlDataAdapter結(jié)合使用,可以方便地去數(shù)據(jù)庫進(jìn)行更新。只要指定Select 語句就可以自動生成Insert,update,delete語句,但要注意一點。Select 語句中返回的列要包括主鍵列,否則將無法產(chǎn)生Update,和Delete語句。相應(yīng)的操作將無法執(zhí)行

public static DataSet SelectSqlSrvRows(string myConnection, string mySelectQuery, string myTableName)

{

   SqlConnection myConn = new SqlConnection(myConnection);

   SqlDataAdapter myDataAdapter = new SqlDataAdapter();

   myDataAdapter.SelectCommand = new SqlCommand(mySelectQuery, myConn);

   SqlCommandBuilder cb = new SqlCommandBuilder(myDataAdapter);

   myConn.Open();

   DataSet ds = new DataSet();

   myDataAdapter.Fill(ds, myTableName);

   //code to modify data in DataSet here

   //Without the SqlCommandBuilder this line would fail

   myDataAdapter.Update(ds, myTableName);

   myConn.Close();

   return ds;

}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多