我从 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommandbuilder.aspx读取SQL命令生成器类,我发现我可以使用select和update命令显示对数据集/数据库所做的更新。如何使用SQL命令生成器和SQL数据Apdater
如果我使用单个数据集,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个项目。
现在说用户更新第二个任何信息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];
}
根据您的建议,如果我加入/宣称在上面的代码适配器/构建它不工作。我得到表映射错误。
的更新记录是否有可能从DataSet1的读/选择行和插入dataset2,然后使用SQL适配器和SQL命令生成器上dataset2在更新数据库中的数据。 –
@RushabhShah关于如何处理这些事情有很多线索。请在这里浏览。即使相关的问题可能会帮助 – nawfal
@RushabhShah,是的 - 这样做没有问题。 – prprcupofcoffee