码迷,mamicode.com
首页 > 数据库 > 详细

SqlCommandBuilder的作用

时间:2014-08-26 21:22:46      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:style   color   os   使用   io   ar   数据   cti   代码   

最近看一个案例,关于如何向数据库传数据,颇有发现。

以前我的数据都是采用Sql代码用SqlCommand一条一条语句的传入数据库。

但是今天发现有更好的方法。

代码如下:

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();

数据库用的是SQL2000,先在数据库中建立Table1的临时表,建立字段MainID,F1,F2,F3

初始数据如下

MainID     F1    F2    F3

1                1        1    1

2                2        2    2

3                3        3    3

4                4        4    4

注意到,我先把数据从数据库中读出来,赋值到DS中

结果显然为4行

然后我在该数据集DS中添加2个同构行

这是注意了,我没有做任何的Insert相关语句

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

但是注意,直接用是不行的,会提示缺少Insert命令的关联

这是可以用了如黄色高亮标记的语句

SqlCommandBuilder SCB=new SqlCommandBuilder(Sda);

这是所有关联就都建立好了,全自动。奇妙,诡异阿

这样就方便多了。

恩,更多的相关功能正在研究中。

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

使用SqlCommandBuilder与SqlDataAdapter结合使用,可以方便地去数据库进行更新。只要指定Select 语句就可以自动生成Insert,update,delete语句,但要注意一点。Select 语句中返回的列要包括主键列,否则将无法产生Update,和Delete语句。相应的操作将无法执行

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;

}

SqlCommandBuilder的作用

标签:style   color   os   使用   io   ar   数据   cti   代码   

原文地址:http://www.cnblogs.com/lyl6796910/p/3938162.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!