首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

大家帮小弟我看看小弟我如何错了,

2012-04-10 
大家帮我看看我怎么错了,,急急急,,,在线等!!!!!static void Main(string[] args){DataTable dt new Data

大家帮我看看我怎么错了,,急急急,,,在线等!!!!!
static void Main(string[] args)
  {
  DataTable dt = new DataTable();
  dt.Columns.Add("id", typeof(System.Int32));
  dt.Columns.Add("val",typeof(System.Int32));
  DataRow dr1 = dt.NewRow();
  dr1["id"] = 1; dr1["val"]=111;
  DataRow dr2 = dt.NewRow();
  dr2["id"] = 2; dr2["val"]=222;
  dt.Rows.Add(dr2);

  string strCon = "Data Source=.;Initial Catalog=test;Integrated Security=True";
  SqlConnection sqlCon = new SqlConnection(strCon);
  SqlCommand cmd = new SqlCommand();

  cmd.Connection = sqlCon;
  sqlCon.Open();
  SqlTransaction trans = sqlCon.BeginTransaction(); //开始执行事务
  try
  {
  foreach (DataRow dr in dt.Rows)
  {
  cmd.CommandText = "update tb_2 set val = @val where id = @id";
  cmd.Parameters.Add("@id", SqlDbType.Int);
  cmd.Parameters["@id"].Value = Convert.ToInt32(dr["id"].ToString());
  cmd.Parameters.Add("@val", SqlDbType.Int);
  cmd.Parameters["@val"].Value = Int32.Parse(dr["val"].ToString());
  cmd.ExecuteNonQuery();
  }
  trans.Commit();
  }
  catch(Exception ex)
  {
  Console.WriteLine(ex.ToString());
  trans.Rollback();
  }
  finally
  {
  sqlCon.Close();
  trans.Dispose();
  sqlCon.Dispose();
  }

  Console.Read();
  }



提示:如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化

[解决办法]
cmd 需要设置SqlTransaction
[解决办法]
cmd.Transaction = trans;
[解决办法]
写在SqlTransaction trans = sqlCon.BeginTransaction(); //开始执行事务后面
[解决办法]
http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqltransaction(v=VS.80).aspx看msdn的例子
[解决办法]

C# code
try  {  cmd.Transaction = trans; //设置事物  foreach (DataRow dr in dt.Rows)  {  cmd.CommandText = "update tb_2 set val = @val where id = @id";  cmd.Parameters.Add("@id", SqlDbType.Int);  cmd.Parameters["@id"].Value = Convert.ToInt32(dr["id"].ToString());  cmd.Parameters.Add("@val", SqlDbType.Int);  cmd.Parameters["@val"].Value = Int32.Parse(dr["val"].ToString());  cmd.ExecuteNonQuery();  cmd.Parameters.Clear();//注意要清空参数  }  trans.Commit();  }  catch(Exception ex)  {  Console.WriteLine(ex.ToString());  trans.Rollback();  }  finally  {  sqlCon.Close();  trans.Dispose();  sqlCon.Dispose();  } 

热点排行