IDataReader srcReader = null;
IDbCommand srcCommand = srcConnection.CreateCommand();
srcCommand.CommandText = queryString; SqlTransaction sqltran_1 = null;//定义事务
sqltran_1 = destConnection.BeginTransaction();//事务开始
SqlCommand destCommand = destConnection.CreateCommand(); //判断目标sql数据库的表是否存在
SqlCommand cmd = new SqlCommand("use " + dbName + " SELECT count(*) FROM SysObjects WHERE Name ='" + destTableName + "'", destConnection);
//cmd.Transaction = sqltran;//关联事务
// sqltran.Commit();//事务提交
//写入日志
this.InsertXml(this.xLogFilePath, operators, "Success", "判断目标sql数据库的[" + destTableName + "]表是否存在");
if (Convert.ToInt32(cmd.ExecuteScalar()) > 0)
{ try
{ SqlCommand cmand = new SqlCommand("use " + dbName + " drop table " + destTableName + "", destConnection); cmand.Connection = destConnection;
cmand.Transaction = sqltran_1; cmand.ExecuteNonQuery();
sqltran_1.Commit();//
srcReader = InsertDataTableOraSql(destConnection, destTableName, srcReader, srcCommand, destCommand, dbName);
//写入日志
this.InsertXml(this.xLogFilePath, operators, "Success", "该表以存在,删除该表并创建新表!");
} catch (Exception ex)
{
//写入日志
InsertXml(this.xLogFilePath, operators, "Err[10002]", ErrorInfo);
ErrorInfo = ex.ToString();
sqltran_1.Rollback();//事务回滚
//将源数据库表的数据复制到目标数据库的表中
throw new Exception("10002"); }
}
else
{
srcReader = InsertDataTableOraSql(destConnection, destTableName, srcReader, srcCommand, destCommand, dbName);
//写入日志
this.InsertXml(this.xLogFilePath, operators, "Success", destTableName + "表不存在,直接创建新表!");
}
我如上写好事务可是老是报 如果分配给命令的连接位于本地挂起事务中,ExecuteScalar 要求命令拥有事务。命令的 Transaction 属性尚未初始化错误 不知道谁能解答一下 不甚感激!如果给ExecuteScalar也添上事务的话后面又会报错!。
解决方案 »
- 进度条,大家帮我改改吧,实在没办法了
- System.Windows.Forms.ListView”并不包含“SelectedItems”的定义
- 水晶报表如何实现多表显示--问题解决另送200分 说到做到
- 紧急求助:C#读取TXT数据,求平均值的问题!高手过来帮忙!!在线等!!!
- 请问一下System.Collections.BitArray类,,是怎么应用的??
- 如何通过代理服务器访问Internet上的Sql server
- 怎样不实例化一个类去调用该类的方法?
- c#求助 关于将文本文件中的数据存入数组,并将其变为double型
- sqlserver存储过程编写,现有一数据库表votesubject结构如下:
- 问候兄弟们,散分,顺便问点问题
- 设置Excel格式NumberFormatLocal="@ "设置了后日期格式就全成数字了,怎么办??
- winform幻灯片效果
IDataReader srcReader = null;
IDbCommand srcCommand = srcConnection.CreateCommand();
srcCommand.CommandText = queryString; int count = cmd.ExecuteScalar(); SqlTransaction sqltran_1 = null;//定义事务
sqltran_1 = destConnection.BeginTransaction();//事务开始
SqlCommand destCommand = destConnection.CreateCommand(); //cmd.Transaction = sqltran;//关联事务
// sqltran.Commit();//事务提交
//写入日志
this.InsertXml(this.xLogFilePath, operators, "Success", "判断目标sql数据库的[" + destTableName + "]表是否存在");
if (count > 0)
{ try
{ SqlCommand cmand = new SqlCommand("use " + dbName + " drop table " + destTableName + "", destConnection); cmand.Connection = destConnection;
cmand.Transaction = sqltran_1; cmand.ExecuteNonQuery();
sqltran_1.Commit();//
srcReader = InsertDataTableOraSql(destConnection, destTableName, srcReader, srcCommand, destCommand, dbName);
//写入日志
this.InsertXml(this.xLogFilePath, operators, "Success", "该表以存在,删除该表并创建新表!");
} catch (Exception ex)
{
//写入日志
InsertXml(this.xLogFilePath, operators, "Err[10002]", ErrorInfo);
ErrorInfo = ex.ToString();
sqltran_1.Rollback();//事务回滚
//将源数据库表的数据复制到目标数据库的表中
throw new Exception("10002"); }
}
else
{
srcReader = InsertDataTableOraSql(destConnection, destTableName, srcReader, srcCommand, destCommand, dbName);
//写入日志
this.InsertXml(this.xLogFilePath, operators, "Success", destTableName + "表不存在,直接创建新表!");
}
你执行查询操作的sqlCommand没有关联上事务。
你执行查询操作的SqlCommand也需要关联上所使用的SqlConnection上的事务。
IDbCommand srcCommand = srcConnection.CreateCommand();
srcCommand.CommandText = queryString; //判断目标sql数据库的表是否存在
SqlCommand cmd = new SqlCommand("use " + dbName + " SELECT count(*) FROM SysObjects WHERE Name ='" + destTableName + "'", destConnection);
int count = cmd.ExecuteScalar();
SqlTransaction sqltran_1 = null;//定义事务
sqltran_1 = destConnection.BeginTransaction();//事务开始
SqlCommand destCommand = destConnection.CreateCommand();
//cmd.Transaction = sqltran;//关联事务
// sqltran.Commit();//事务提交
//写入日志
this.InsertXml(this.xLogFilePath, operators, "Success", "判断目标sql数据库的[" + destTableName + "]表是否存在");
if (count > 0)
{
try
{ SqlCommand cmand = new SqlCommand("use " + dbName + " drop table " + destTableName + "", destConnection); cmand.Connection = destConnection;
cmand.Transaction = sqltran_1; cmand.ExecuteNonQuery();
sqltran_1.Commit();//
srcReader = InsertDataTableOraSql(destConnection, destTableName, srcReader, srcCommand, destCommand, dbName);
//写入日志
this.InsertXml(this.xLogFilePath, operators, "Success", "该表以存在,删除该表并创建新表!");
} catch (Exception ex)
{
//写入日志
InsertXml(this.xLogFilePath, operators, "Err[10002]", ErrorInfo);
ErrorInfo = ex.ToString();
sqltran_1.Rollback();//事务回滚
//将源数据库表的数据复制到目标数据库的表中
throw new Exception("10002"); }
}
else
{
srcReader = InsertDataTableOraSql(destConnection, destTableName, srcReader, srcCommand, destCommand, dbName);
//写入日志
this.InsertXml(this.xLogFilePath, operators, "Success", destTableName + "表不存在,直接创建新表!");
}