SqlConnection con = GetCon();
if (con.State.Equals(ConnectionState.Closed))
{
con.Open();
}
SqlDataAdapter myAdapter = new SqlDataAdapter( "SELECT * FROM " + table, con);
//直接使用上面的myAdapter重载方法赋值SELECT命令,所以注释下面两行
//SqlCommand myCommand = new SqlCommand("SELECT * FROM " + table, con);
//myAdapter.SelectCommand = myCommand;
SqlTransaction myTrans = con.BeginTransaction(); //添加一个事务
//因为没有新建myCommand,而使用myAdapter.SelectCommand,所以注释并替换下面一行
//myCommand.Transaction = myTrans;
myAdapter.SelectCommand.Transaction = myTrans;
SqlCommandBuilder SCB = new SqlCommandBuilder(myAdapter);
//添加下面两行来指定UpdateCommand和InsertCommand命令
myAdapter.UpdateCommand = SCB.GetUpdateCommand();
myAdapter.InsertCommand = SCB.GetInsertCommand();
myAdapter.Fill(ds, table);
try
{
myAdapter.Update(ds, table);
ds.AcceptChanges();
myTrans.Commit(); //事务正常提交
return true ;
}
catch (SqlException ex)
{
try
{
myTrans.Rollback(); //事务回滚
throw new Exception( "SQL数据库连接失败,操作数据库产生错误: " + ex.Message);
}
catch (SqlException ey) //回滚失败
{
if (myTrans.Connection != null )
{
throw new Exception( "数据回滚事务遇到一个异常类型 : " + ey.GetType());
}
}
return false ;
}
finally
{
con.Close();
}
|