比如现在三十么记录,可插入到数据库中去。放在一个事务中。
如下方法
/// <summary>
/// 起动事务处理执行操作。
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public int ExecuteNonQuery(ArrayList list,DbParameter[] values)
{
SqlCommand cmd = this.CreateCommand() as SqlCommand ;
SqlTransaction transaction = cmd.Connection.BeginTransaction(IsolationLevel.ReadCommitted);
cmd.Transaction = transaction;
bool isSuccess = false;
int count = list.Count;
int sign = 0;
try
{
for (int i = 0; i < count; i++)
{
cmd.CommandText = list[i].ToString(); //-->这里就是那存储过程名称。
foreach (SqlParameter sp in values)
{
cmd.Parameters.Add(sp);
}
sign = cmd.ExecuteNonQuery(); //-->这里返回的值,可以是自已写在存储过程中 return的那个值吗?
if (sign < 0)
{
isSuccess = false;
break;
}
else
{
isSuccess = true;
}
}
}
catch
{
isSuccess = false;
}
finally
{
if (isSuccess == true)
{
transaction.Commit();
sign = 1;
}
else
{
transaction.Rollback();
sign = -1;
}
cmd.Connection.Close();
cmd.Connection.Dispose();
cmd.Dispose();
}
return sign;
}
如果这里执行的时候前十五条记录成功了,到行第十六的时候失败了
那么事务回滚会的时候,会把前十五条记录给删除吗?
如下方法
/// <summary>
/// 起动事务处理执行操作。
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public int ExecuteNonQuery(ArrayList list,DbParameter[] values)
{
SqlCommand cmd = this.CreateCommand() as SqlCommand ;
SqlTransaction transaction = cmd.Connection.BeginTransaction(IsolationLevel.ReadCommitted);
cmd.Transaction = transaction;
bool isSuccess = false;
int count = list.Count;
int sign = 0;
try
{
for (int i = 0; i < count; i++)
{
cmd.CommandText = list[i].ToString(); //-->这里就是那存储过程名称。
foreach (SqlParameter sp in values)
{
cmd.Parameters.Add(sp);
}
sign = cmd.ExecuteNonQuery(); //-->这里返回的值,可以是自已写在存储过程中 return的那个值吗?
if (sign < 0)
{
isSuccess = false;
break;
}
else
{
isSuccess = true;
}
}
}
catch
{
isSuccess = false;
}
finally
{
if (isSuccess == true)
{
transaction.Commit();
sign = 1;
}
else
{
transaction.Rollback();
sign = -1;
}
cmd.Connection.Close();
cmd.Connection.Dispose();
cmd.Dispose();
}
return sign;
}
如果这里执行的时候前十五条记录成功了,到行第十六的时候失败了
那么事务回滚会的时候,会把前十五条记录给删除吗?
解决方案 »
- 线程问题
- using Microsoft.Office.Interop.Excel 在哪里引入??
- SocketAsyncEventArgs异步通信问题?
- 讨论一下最快的移动文件的方法
- 如何设置dataGridView的首列(标题列)宽度?????
- 怎样让程序的进程名不随程序文件名改变而改变
- 手动添加listview到panel里面,listview被panel遮住了,要怎么设置属性阿?
- 有没有办法把资源中的C++DLL加载到内存中然后调用,而不是放到本地文件中
- 向大家推荐一个好的DELPHI电子书下载网站,全是关于编程的,书的种类很全,下载很快
- C#操作Excel
- ObsoleteAttribute 实现问题?
- C#调用oracle的package的存储出错
这sign个值是在存储过程中定义return 返回的那个数吗?