如何使用SQL命令生成器和SQL数据Apdater(How to use SQL Command B

2019-09-28 14:22发布

我从读SQL命令生成器类http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommandbuilder.aspx ,我发现我可以使用SELECT和UPDATE命令显示更新的数据集/数据库中完成。

SQL命令生成器的概念是明确的,如果我使用单一数据集,但如果我想使用两个不同的数据集?

场景:我读从数据库值到一个集DS1; 这是分配给SQL适配器和SQL命令生成器。 现在,我从DS1仅读取选定的值,并存储到第二数据集DS2; 未分配给SQL数据适配器和SQL命令生成器。

我很关心,如果我更新的DS2是否会更新数据库或没有任何数据。 另外,我应该如何使用SQL命令生成器和SQL适配器它做。

//主要数据集

ds = new ProductDataSet();
        command = new SqlCommand(
            "SELECT no, name, price, cost, dept FROM PRODUCTS", connection);
        adapter = new SqlDataAdapter();
        adapter.SelectCommand = command;            
        adapter.Fill(ds, "table");

主要数据集是填补的形式加载事件。 用户将进入项目没有他所选择的这将是从主DS和保存/显示到第二DS(DS第二不与任何适配器或命令生成器连接现在)搜索。 对于如; 第二DS有3项。

现在说用户更新2日DS就会自动更新数据库并显示在网格的任何信息。

//第二DS2更新代码

for (int i = 0; i < ds2.Tables[0].Rows.Count; i++)
                            {
 string item = ds2.Tables[0].Rows[i][0].ToString();                   

command = new SqlCommand("UPDATE PRODUCTS SET " + _colName + " = '" + _newValue + "'" + "WHERE ITEM_NO = '" + item + "'", Class1.conn);                                    
datagrid.DataSource = ds2.Tables[0];

}

根据你的建议,如果我加入/宣称在上面的代码适配器/构建它不工作。 我收到表映射错误。

Answer 1:

使用另一个SQLAdapter和SQLCommandBuilder。 该网页上的示例显示如何更新数据库。 你只需要提供一个查询的形式要更新的领域,如:

SELECT Name, Address, Phone, Email FROM Contact

和命令生成器将生成正确的SQL UPDATE语句。



Answer 2:

SqlCommandBuilder自动生成INSERT,UPDATE和DELETE基于单个表的SELECT语句的SQL语句。

对于使用SqlCommandBuilder生成Transact-SQL语句中,有2个步骤

步骤1.将SqlDataAdapter对象的“的SelectCommand”属性

      SqlDataAdapter dataAdapter = new SqlDataAdapter();

      dataAdapter.SelectCommand = new SqlCommand("SELECT_Query", con);

      DataSet dataSet = new DataSet();
      dataAdapter.Fill(dataSet, "Students");

步骤2.创建SqlCommandBuilder类的一个实例和关联SqlCommandBuilder对象的使用DataAdapter属性上面创建的SqlDataAdapter对象

        SqlCommandBuilder builder = new SqlCommandBuilder();
        builder.DataAdapter = dataAdapter;

步骤3. DS1的刷新历史记录

         dataAdapter.Update(ds1, "Students");


文章来源: How to use SQL Command Builder and SQL Data Apdater