C#中操作数据库
我在一个按钮事件里面写了对一个数据库三个表的操作,我想问下如何保证当错误发生时,这几个操作就像事务一样发生回滚呢错误就是我那三个sql语句万一有哪个是错的,如何回滚,注意...
我在一个按钮事件里面写了对一个数据库三个表的操作,我想问下如何保证当错误发生时,这几个操作就像事务一样发生回滚呢
错误就是我那三个sql语句万一有哪个是错的,如何回滚,注意是在C#按钮事件里面如何写代码 展开
错误就是我那三个sql语句万一有哪个是错的,如何回滚,注意是在C#按钮事件里面如何写代码 展开
3个回答
展开全部
SqlConnection sqlConnection = new SqlConnection("连接字符串"); //初始化连接
// 开启事务
SqlTransaction sqlTransaction = sqlConnection.BeginTransaction();
// 将事务应用于Command
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.Transaction = sqlTransaction;
try
{
// 利用sqlcommand进行数据操作
...
// 成功提交
sqlTransaction.Commit();
}
catch(Exception ex)
{
// 出错回滚
sqlTransaction.Rollback();
}
finally
{
//释放资源
sqlConnection.Close();
sqlTransaction.Dispose();
sqlConnection.Dispose();
}
// 开启事务
SqlTransaction sqlTransaction = sqlConnection.BeginTransaction();
// 将事务应用于Command
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.Connection = sqlConnection;
sqlCommand.Transaction = sqlTransaction;
try
{
// 利用sqlcommand进行数据操作
...
// 成功提交
sqlTransaction.Commit();
}
catch(Exception ex)
{
// 出错回滚
sqlTransaction.Rollback();
}
finally
{
//释放资源
sqlConnection.Close();
sqlTransaction.Dispose();
sqlConnection.Dispose();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你所使用的链接库肯定有事务对象的。具体查一下就知道了。比如OracleClien下就是这样实现:
using (OracleConnection connection = new OracleConnection(connectionString))
{
connection.Open();
OracleCommand command = connection.CreateCommand();
OracleTransaction transaction;
// Start a local transaction
transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
// Assign transaction object for a pending local transaction
command.Transaction = transaction;
try
{
command.CommandText =
"INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')";
command.ExecuteNonQuery();
command.CommandText =
"INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')";
command.ExecuteNonQuery();
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception e)
{
transaction.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Neither record was written to database.");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询