有两个表一个合计,一个明细表
con.Open();
cmd = new SqlCommand();
cmd.Connection = con;
SqlTransaction tx = con.BeginTransaction(); //事务开始
cmd.Transaction = tx;
try
{
for (int i = 0; i < sqlstr.Length ; i++)
{
string strsql = sqlstr [i];
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql; //这一句插入合计表
cmd.ExecuteNonQuery();
apdate.Update((DataTable)bindingSource1.DataSource) //这一句插入明细表(datagridview数据)
}
}
tx.Commit();
MessageBox.Show("成功");
OnGjxg();
this.Close();
}
catch
{
tx.Rollback();
MessageBox.Show("运行错误");
}这样的代码行吗?
不行有什么方法?
con.Open();
cmd = new SqlCommand();
cmd.Connection = con;
SqlTransaction tx = con.BeginTransaction(); //事务开始
cmd.Transaction = tx;
try
{
for (int i = 0; i < sqlstr.Length ; i++)
{
string strsql = sqlstr [i];
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql; //这一句插入合计表
cmd.ExecuteNonQuery();
apdate.Update((DataTable)bindingSource1.DataSource) //这一句插入明细表(datagridview数据)
}
}
tx.Commit();
MessageBox.Show("成功");
OnGjxg();
this.Close();
}
catch
{
tx.Rollback();
MessageBox.Show("运行错误");
}这样的代码行吗?
不行有什么方法?
con.Open();
cmd = new SqlCommand();
cmd.Connection = con;
SqlTransaction tx = con.BeginTransaction(); //事务开始
cmd.Transaction = tx;
try
{
cmd.CommandText = strsql; //这一句插入合计表
cmd.ExecuteNonQuery();
apdate.Update((DataTable)bindingSource1.DataSource) //这一句插入明细表(datagridview数据)
tx.Commit();
MessageBox.Show("成功");
this.Close();
}
catch
{
tx.Rollback();
MessageBox.Show("运行错误");
} 这样的代码行吗?
不行有什么方法?
放在所有代码的最后执行
finally
{
if(conn!=null)
{
conn.close();
}
}
应该是的,我update直接用sql语句
总之要传事务给连接开始事务后引用这个连接的的所有其它sql操作控件
提示未将对象引用到时实例
因为我没有设置UpdateCommand字段
有什么方法解决吗?
你是用bindingsource控件和tableadapter控件将数据绑定到datagridview中的吧,还想用事务。我正为这事苦恼呢,用控件绑定数据就不知道如何用事务。
用代码编写事务又不方便操作datagridview中的数据不知楼主的方法成功了吗?
using System.Data.SqlClient;
2
3protected void ExecMuliSQL()
4{
5DataTable dt = new DataTable();
6
7SqlConnection cnn = new SqlConnection("连接字符串");
8SqlCommand cm = new SqlCommand();
9cm.Connection = cnn;
10cnn.Open();
11SqlTransaction trans = cnn.BeginTransaction();
12//各步操作
13try
14{
15foreach(DataRow dr in dt.Rows)
16{
17cm.CommandText = "update [库存表] set [库存数量] = @amount where productID = @productID";
18cm.Parameters.Add("@amount",SqlDbType.Int);
19cm.Parameters["@amount"].Value = Convert.ToInt32(dr["amount"]);
20cm.Parameters.Add("@productID",SqlDbType.VarChar);
21cm.Parameters["@productID"].Value = dr["productID"].ToString();
22cm.ExecuteNonQuery();
23}
24trans.Commit();
25}
26catch
27{
28trans.Rollback();
29}
30finally
31{
32cnn.Close();
33trans.Dispose();
34cnn.Dispose();
35}
36}