[英]Multiple Sql Insert String And RollBack With Catch(Exception)
如果我必須插入兩個sql表,字符串的位置如下:
// Single Record Insert
String AA=”Insert into aa(date)values(@date)”;
//Multiple Record Insert with datagridview1
For(int i=0;i<datagridview1.rows.count-1;i++)
{
String BB= “insert into bb(name,amount)values(@name,@amount)”;
}
如果有兩個不同的sql插件字符串,按上面的單個和多個插入按鈕單擊事件比是否可以在單個sql命令上處理它,如果是,則回復如何?
但是根據我認為單個SqlCommand是不可能的,如果它是真的,那么調整SqlTransaction類以進行回滾和提交會有很大的問題。 使用EventHandller的try和catch塊
我真的很難在一個Button1_Click事件中插入多個sql語句。 建議我正確的解決方案或正確的方法,技術。
您可以在ADO.NET代碼中明確定義事務。
private void button1_Click(object sender, EventArgs e)
{
SqlConnection db = new SqlConnection("constring");
SqlCommand com = new SqlCommand();
SqlCommand com2 = new SqlCommand();
SqlTransaction tran;
db.Open();
tran = db.BeginTransaction();
try
{
//Run all your insert statements here here
com.CommandText = "Insert into a(Date) Values(@Date)";
com.Connection = db;
com.Transaction = tran;
com.Parameters.Add("@Date", SqlDbType.DateTime);
com.Parameters["@Date"].Value = DateTime.Now;
com.ExecuteNonQuery();
com2.CommandText = "Insert into bb(name,amount) values(@name, @amount)";
com2.Connection = db;
com2.Transaction = tran;
com2.Parameters.Add("@name", SqlDbType.VarChar, 25);
com2.Parameters.Add("@amount", SqlDbType.Decimal);
for (int i = 0; i < datagrid.Rows.Count; i++)
{
//on each loop replace @name value and @amount value with appropiate
//value from your row collection
com2.Parameters["@name"].Value = datagrid.Rows[i].Cells["Name"].Value;
com2.Parameters["@amount"].Value = datagrid.Rows[i].Cells["Amount"].Value;
com2.ExecuteNonQuery();
}
tran.Commit();
}
catch (SqlException sqlex)
{
tran.Rollback();
}
finally
{
db.Close();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.