簡體   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