菜鸟成长日记

重在积累

神奇的SqlCommandBuilder

最近看一个案例,关于如何向数据库传数据,颇有发现。
以前我的数据都是采用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);

这是所有关联就都建立好了,全自动。奇妙,诡异阿
这样就方便多了。
恩,更多的相关功能正在研究中。

posted on 2006-09-04 22:51  上帝凝视  阅读(394)  评论(0编辑  收藏  举报

导航