zoukankan      html  css  js  c++  java
  • 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);

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

    这样就方便多了。

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

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

    使用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;

    }

  • 相关阅读:
    Regex Expression的资料和笔记整理
    27个提升效率的iOS开源库推荐
    IOS-Swift、Objective-C、C++混合编程
    《极客学院 --NSAttributedString 使用详解-4-UITextKit 简介》学习笔记(待处理)
    前端开发学习网站
    为Xcode添加和备份快捷代码
    Swift语言与Objective-C语言混合编程
    《慕客网:IOS动画案例之会跳动的登入界面(下)》学习笔记 -Sketch的使用
    《慕客网:IOS动画案例之会跳动的登入界面(上)》学习笔记 -Sketch的使用
    关于移动端架构的好的学习网站
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/3938162.html
Copyright © 2011-2022 走看看