如何在程序中使用事务

shjqk 2009-03-16 03:16:53
在程序中要执行一组SQL语句,需要用到事务
Database dbTestDB;
dbTestDB= DatabaseFactory.CreateDatabase(Conn_TestDB);
DbCommand dbCommand = dbTestDB.GetSqlStringCommand(sSql);
DbTransaction Dbtran = null;
//这样做不行,会报Object reference not set to an instance of an object.
Dbtran = dbCommand.Connection.BeginTransaction();
dbCommand.Transaction = Dbtran;
try
{
...
}
catch(...)
{
}
应该怎么做实现事务
...全文
65 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shjqk 2009-03-17
  • 打赏
  • 举报
回复
up
shjqk 2009-03-16
  • 打赏
  • 举报
回复
但是我在
Dbtran = dbCommand.Connection.BeginTransaction();
会报Object reference not set to an instance of an object.
mykelly6 2009-03-16
  • 打赏
  • 举报
回复

internal void deleteByURL(SqlTransaction tran)
{
string sqlStr = "DELETE enclosure WHERE m_id = " + m_id + " AND e_url = '" + e_url +"'";
SqlCommand cmd = new SqlCommand(sqlStr, tran.Connection, tran);
cmd.ExecuteNonQuery();
}

relive_qiankai 2009-03-16
  • 打赏
  • 举报
回复
begin Dbtran
mykelly6 2009-03-16
  • 打赏
  • 举报
回复
try
{
...
Dbtran.Commit();//没有出错提交到数据库
}
catch(...)
{
Dbtran.Rollback();//出错了就回滚
}
例子:

conn = DBUtil.getConnection();
SqlTransaction tran = conn.BeginTransaction();
foreach (DataGridViewRow r in dataGridViewFile.SelectedRows)
{
Enclo en = new Enclo();
en.E_url = r.Cells["e_url"].Value.ToString();
en.M_id = m_id;
en.deleteByURL(tran);//数据库操作
}
tran.Commit();
tran.Dispose();
DBUtil.closeConnection(conn);
zzxap 2009-03-16
  • 打赏
  • 举报
回复
begin tran

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧