c# 怎么写事务?

来源:百度知道 编辑:UC知道 时间:2024/06/04 04:03:11
namespace Custom
{
public class CDB
{
public SQLiteConnection con = new SQLiteConnection("data source=Custom.s3db");

public DataSet OpenSQL(string sqlstr,params object[] args)
{

SQLiteCommand cmd = new SQLiteCommand(sqlstr, con);
for (int i = 0; i < args.Length; i++)
{
SQLiteParameter p = new SQLiteParameter();
p.Value = args[i];
p.ParameterName = "p" + i.ToString();
cmd.Parameters.Add(p);
p = null;
}
SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
DataSet ds = new DataSet();
con.Close();
con.Open();
da.Fill(ds);
return ds;
}

public bool ExecSQL(string[] sqlstr)
{
try
{
SqlTransaction myTrans = con.BeginTransaction();
SQLiteCommand cmd = new SQLiteCommand(sqlstr, con);
cmd.Transaction = myTrans;
for(int i = 0; i < sqlstr.Length; i++)
{
cmd.CommandText = sqlstr[i];
cmd.ExecuteNonQuery();
}
myTrans.Commit();
return true;
}
catch(SqlException ex)
{
throw new ApplicationException(e.Message);
}
}

事务处理应该是写在数据库里的

一楼也看看
string[] sqls = .....//把所有要执行的sql语句放入一个string数组里. 或者是其他什么集合类都行.
OleDbConnection conn; ///俺是用access数据库所以是oledb,根据具体情况改
OleDbCommand cmd;
OleDbTransaction trans;
conn = .........;//省略了
cmd = conn.CreateCommand();
trans = conn.BeginTransaction();
cmd.Transaction = trans;

try
{
for (int i = 0; i < sqls.length; i++)
{
cmd.CommandText = sqls[i];
cmd.ExecuteNonQuery();

}
trans