![](/img/trans.png)
[英]Record and Table locking in C# WinForms with PostgreSql and ADO.NET
[英]Inserting just a new record using DataSet (.net c# ado.net )
我有一个.NET桌面应用程序中包含200多个文本框的表单。 我想将它们插入各自的4个数据库表中。 现在,我应该如何使用Dataset和DataAdapter做到这一点?
我的意思是通常这是流程:
DataAdapter.Fill(Dataset,"DataTable");
填充DataAdapter.Fill(Dataset,"DataTable");
DataAdapter.Update(Dataset,"DataTable")
将内容更新回数据库。 代码: http : //dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html#connector-net-tutorials-data-adapter
但是在这里,我只想在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.