使用数据集(.net c#ado.net)仅插入新记录
在.NET桌面应用程序中,我有一个包含200多个文本框的表单。我想将它们插入各自的4个数据库表中。现在,我应该如何使用Dataset和DataAdapter来实现这一点 我的意思是,通常情况下,这就是流程:使用数据集(.net c#ado.net)仅插入新记录,c#,.net,ado.net,C#,.net,Ado.net,在.NET桌面应用程序中,我有一个包含200多个文本框的表单。我想将它们插入各自的4个数据库表中。现在,我应该如何使用Dataset和DataAdapter来实现这一点 我的意思是,通常情况下,这就是流程: 使用DataAdapter.Fill(数据集,“数据表”)填充数据集 管理数据集的数据 DataAdapter.Update(数据集,“数据表”)将内容更新回数据库 代码: 但这里我只想在3个不同的表中插入一条新记录 我想办法是 以编程方式创建包含3个数据表的数据集 将200个文本框绑定到这
DataAdapter.Fill(数据集,“数据表”)填充数据集代码>
DataAdapter.Update(数据集,“数据表”)
将内容更新回数据库dataAdapter.Update(数据集,dataTable.TableName)代码>
dataAdapter.Update(dataSet,dataTable.TableName)代码>它会删除所有其余的记录并单独插入这一条吗
我只想将一条新记录(不将其他1000条记录提取到我的数据集中)插入数据库。使用数据集的表。每行都有一个RowState属性,这将由dataAdapter使用。因此,如果数据集只有一个新行,则行状态将为DataRowState.Added。DataAdapter将插入行并将行状态更改为DataRowState.Unchanged。数据库中的所有其他行都将保持不变
IDbTransaction dbTransaction = dbConnection.BeginTransaction();
try
{
foreach (DataTable dataTable in dataSet.Tables)
{
string sql = "SELECT * FROM " + dataTable.TableName + " WHERE 0 = 1";
SqlDataAdapter dataAdapter = new SqlDataAdapter (sql, dbConnection);
dataAdapter.Update(dataSet, dataTable.TableName);
}
}
catch
{
dbTransaction.Rollback();
throw;
}
dbTransaction.Commit();
备注:如果定义的数据库中存在约束,则将不起作用。只需执行SQL insert命令并执行它们:
string cmd="insert into myTable(column1, column2, etc) values (@text1,@text2, etc)";
SqlCommand sqlcmd=new SqlCommand(cmd,mySqlConnection);
sqlcmd.Parameters.Add("@text1",SqlDbType.NChar,textbox1.Text);
sqlcmd.Parameters.Add("@text2",SqlDbType.NChar,textbox2.Text);
sqlcmd.ExecuteNonQuery();
我想我的问题不清楚。我编辑了它。我想插入一条新记录(而不将其他1000条记录提取到我的数据集中)。所以,当我执行dataAdapter.Update(dataSet,dataTable.TableName)时;我想我会引起问题。这是否会导致foreach(dataSet.Tables中的DataTable)dataAdapter.Update(dataSet,DataTable.TableName);有用吗?我没有试过,但看着它,我觉得它不会起作用,因为。使dataAdapter.Update()语句正常工作。必须有相应的插入、更新、删除查询。但当我们实例化dataAdapter时,我们对单个表使用SELECT查询,对吗?因此,它只适用于该表,而不适用于其他表。