怎么用ROLLBACK TRANSACTION BEGIN TRANSACTION ; INSERT ....DELETE ....IF @error = 1 BEGIN ROLLBACK TRANSACTION ; RETURN ; ENDINSERT ....DELETE ....COMMIT TRANSACTION ; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 begin transaction--sql 语句if @@error=0 commit transactionelse rollback transaction #region: 事物开始 /// <summary> /// 事物开始 /// </summary> public void DbBeginTrans() { try { if (_db_type == "ORACLE") { // /* // if (_cn_ora.State != ConnectionState.Open) // _cn_ora.Open(); // _trans_ora = _cn_ora.BeginTransaction(IsolationLevel.ReadCommitted); // _cm_ora.Transaction = _trans_ora; // */ } else { if (_cn.State != ConnectionState.Open) _cn.Open(); _trans = _cn.BeginTransaction(IsolationLevel.ReadCommitted); _cm.Transaction = _trans; } } catch (Exception e) { _expmsg = e.Message; _strErr = e.ToString(); } } #endregion #region : Commit /// <summary> /// Commit /// </summary> public void DbCommit() { try { if (_db_type == "ORACLE") { /* _trans_ora.Commit(); _cn_ora.Close(); */ } else { _trans.Commit(); _cn.Close(); } } catch (Exception e) { string strErr; strErr = e.ToString(); System.Console.Out.Write(strErr); } } #endregion #region : 回滚 /// <summary> /// 回滚 /// </summary> public void DbRollback() { try { if (_db_type == "ORACLE") { /* _trans_ora.Rollback(); _cn_ora.Close(); */ } else { _trans.Rollback(); _cn.Close(); } } catch (Exception e) { _expmsg = e.Message; _strErr = e.ToString(); } } #endregion #region 初始化数据库 /// <summary> /// 用途:创建数据库并初始化数据库 /// </summary> /// <returns>true:创建或者初始化成功 false:创建或者初始化失败</returns> public bool replayDataBase() { //创建数据库 try { string myExecuteQuery = "create database LMS"; ComConfig config = new LMS.ComConfig(); SqlConnection mySqlConnection = new SqlConnection(config.connectionSimpleString); SqlCommand myCommand = new SqlCommand(myExecuteQuery, mySqlConnection); myCommand.Connection.Open(); myCommand.ExecuteNonQuery(); mySqlConnection.Close(); } catch (System.Data.SqlClient.SqlException E) { MessageBox.Show(E.Message); return false; } System.Threading.Thread.Sleep(5000);//休眠5秒,否则由于时间问题读取不到这个数据库,初始化数据库报错 //开始初始化数据库 //读取资源文件InitDatabase.text add by gefangliang 2011-03-23 clsInsertDate cp = new clsInsertDate(); int rtn = 0; Assembly assem1 = this.GetType().Assembly; Stream steam1 = assem1.GetManifestResourceStream(@"LMS.InitDatabase.text"); StreamReader reader1 = new StreamReader(steam1); string responseFromServer = reader1.ReadToEnd(); //数据导入新版本系统中功能 add by gefangliang 2011-03-22 ComDB db = new ComDB(); db.DbBeginTrans(); string strSQL = ""; //文本按照go区分段落 string[] strInitDatabase = Regex.Split(responseFromServer, @"(?i)\s*\ngo\s*\n?"); for (int i = 0; i < strInitDatabase.Length; i++) { strSQL = strInitDatabase[i]; rtn = db.DbExecuteReaderAgain(strSQL.ToString()); if (rtn == ComConst.FAILED) { db.DbRollback();//如果sql语句有误,回滚 MessageBox.Show("数据库创建失败,数据回滚完毕!", "数据库消息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show(strSQL, "错误代码", MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } } db.DbCommit(); MessageBox.Show("数据库初始化成功!", "数据库消息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return true; } #endregion 更新xml节点 column”参数不能为空。 页面使用的用户控件中汉字乱码 再问,判断字段是否为空的问题??? 关于freetextbox的方法怎么在前台数据绑定的时候调用?? 如何把本地的MDB里的表导入到另一台SQL服务器中去? 怎么样把web应用程序安装到其它目录下,而不是默认的目录下面??? Sql2005Express的数据库创建及连接问题 .net根据条件调用数据 问下自动检测是否有新文件的问题 本地测试成功的ASP.NET网站如何发布到网上 数据库中的保存文件下载,迅雷不支持下载文件流怎么办?
--sql 语句if @@error=0
commit transaction
else
rollback transaction
#region: 事物开始 /// <summary>
/// 事物开始 /// </summary>
public void DbBeginTrans()
{ try
{
if (_db_type == "ORACLE")
{
// /*
// if (_cn_ora.State != ConnectionState.Open)
// _cn_ora.Open();
// _trans_ora = _cn_ora.BeginTransaction(IsolationLevel.ReadCommitted);
// _cm_ora.Transaction = _trans_ora;
// */
}
else
{
if (_cn.State != ConnectionState.Open)
_cn.Open();
_trans = _cn.BeginTransaction(IsolationLevel.ReadCommitted);
_cm.Transaction = _trans;
}
}
catch (Exception e)
{
_expmsg = e.Message;
_strErr = e.ToString();
}
}
#endregion
#region : Commit
/// <summary>
/// Commit
/// </summary>
public void DbCommit()
{
try
{
if (_db_type == "ORACLE")
{
/*
_trans_ora.Commit();
_cn_ora.Close();
*/
}
else
{
_trans.Commit();
_cn.Close();
}
}
catch (Exception e)
{
string strErr; strErr = e.ToString();
System.Console.Out.Write(strErr);
}
}
#endregion #region : 回滚
/// <summary>
/// 回滚
/// </summary>
public void DbRollback()
{
try
{
if (_db_type == "ORACLE")
{
/*
_trans_ora.Rollback();
_cn_ora.Close();
*/
}
else
{
_trans.Rollback();
_cn.Close();
}
}
catch (Exception e)
{
_expmsg = e.Message;
_strErr = e.ToString();
}
}
#endregion
#region 初始化数据库
/// <summary>
/// 用途:创建数据库并初始化数据库
/// </summary>
/// <returns>true:创建或者初始化成功 false:创建或者初始化失败</returns>
public bool replayDataBase()
{
//创建数据库
try
{
string myExecuteQuery = "create database LMS";
ComConfig config = new LMS.ComConfig();
SqlConnection mySqlConnection = new SqlConnection(config.connectionSimpleString);
SqlCommand myCommand = new SqlCommand(myExecuteQuery, mySqlConnection);
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
mySqlConnection.Close();
}
catch (System.Data.SqlClient.SqlException E)
{
MessageBox.Show(E.Message);
return false;
}
System.Threading.Thread.Sleep(5000);//休眠5秒,否则由于时间问题读取不到这个数据库,初始化数据库报错
//开始初始化数据库
//读取资源文件InitDatabase.text add by gefangliang 2011-03-23
clsInsertDate cp = new clsInsertDate();
int rtn = 0;
Assembly assem1 = this.GetType().Assembly;
Stream steam1 = assem1.GetManifestResourceStream(@"LMS.InitDatabase.text");
StreamReader reader1 = new StreamReader(steam1);
string responseFromServer = reader1.ReadToEnd();
//数据导入新版本系统中功能 add by gefangliang 2011-03-22
ComDB db = new ComDB();
db.DbBeginTrans();
string strSQL = "";
//文本按照go区分段落
string[] strInitDatabase = Regex.Split(responseFromServer, @"(?i)\s*\ngo\s*\n?");
for (int i = 0; i < strInitDatabase.Length; i++)
{
strSQL = strInitDatabase[i];
rtn = db.DbExecuteReaderAgain(strSQL.ToString());
if (rtn == ComConst.FAILED)
{
db.DbRollback();//如果sql语句有误,回滚
MessageBox.Show("数据库创建失败,数据回滚完毕!", "数据库消息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show(strSQL, "错误代码", MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
}
db.DbCommit();
MessageBox.Show("数据库初始化成功!", "数据库消息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return true;
}
#endregion