使用数据集(.net c#ado.net)仅插入新记录

使用数据集(.net c#ado.net)仅插入新记录,c#,.net,ado.net,C#,.net,Ado.net,在.NET桌面应用程序中,我有一个包含200多个文本框的表单。我想将它们插入各自的4个数据库表中。现在,我应该如何使用Dataset和DataAdapter来实现这一点 我的意思是,通常情况下,这就是流程: 使用DataAdapter.Fill(数据集,“数据表”)填充数据集 管理数据集的数据 DataAdapter.Update(数据集,“数据表”)将内容更新回数据库 代码: 但这里我只想在3个不同的表中插入一条新记录 我想办法是 以编程方式创建包含3个数据表的数据集 将200个文本框绑定到这

在.NET桌面应用程序中,我有一个包含200多个文本框的表单。我想将它们插入各自的4个数据库表中。现在,我应该如何使用Dataset和DataAdapter来实现这一点

我的意思是,通常情况下,这就是流程:

  • 使用
    DataAdapter.Fill(数据集,“数据表”)填充数据集
  • 管理数据集的数据
  • DataAdapter.Update(数据集,“数据表”)
    将内容更新回数据库
  • 代码:

    但这里我只想在3个不同的表中插入一条新记录

    我想办法是

  • 以编程方式创建包含3个数据表的数据集
  • 将200个文本框绑定到这些数据表的相应列
  • dataAdapter.Update(数据集,dataTable.TableName)
  • 我说得对吗

    如何更新(dataSet,dataTable.TableName)工作?因为,我的每个数据表只有一条记录。(要插入的新记录。与表单的200个文本框绑定)其中,作为数据库的表,将有数千条记录。如果我执行
    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查询,对吗?因此,它只适用于该表,而不适用于其他表。