繁体   English   中英

使用DataSet(.net c#ado.net)仅插入新记录

[英]Inserting just a new record using DataSet (.net c# ado.net )

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

我的意思是通常这是流程:

  1. 使用DataAdapter.Fill(Dataset,"DataTable");填充DataAdapter.Fill(Dataset,"DataTable");
  2. 处理数据集的数据
  3. DataAdapter.Update(Dataset,"DataTable")将内容更新回数据库。

代码: http : //dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html#connector-net-tutorials-data-adapter

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

我认为方法是

  1. 以编程方式创建具有3个数据表的数据集。
  2. 将200个文本框绑定到这些数据选项卡的相应列
  3. dataAdapter.Update(dataSet, dataTable.TableName);

我对吗?

如何dataAdapter.Update(dataSet, dataTable.TableName); 工作? 因为,我的每个dataTable将只有一个记录。 (将要插入的新记录。与表格的这200个TextBox绑定),其中,数据库表将具有数千条记录。 如果我做dataAdapter.Update(dataSet, dataTable.TableName); 它将删除所有其余记录并单独插入其中一条吗?

我只想使用Dataset将一个新记录(不将其他1000条记录提取到我的Dataset中)插入Database.Table中。

每行都有一个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插入命令并执行它们即可:

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM