如果是sql语句、存储过程,都可以封装,如下举sql语句的例子:
public bool ExecuteSql(string sql)
{
bool result = false;
conn...;
cmd...;
cmd.CommandText = sql;
int i = Convert.ToInt32(cmd.ExecuteNonQuery());
if(i == 1)
result = true;
return result;
}
请教大家,如果是一个事务,怎么样封装比较好?谢谢大家!
8 个解决方案
#1
不明白你的需求
要写事务可以直接在前台写.或是在后过程里是写
要写事务可以直接在前台写.或是在后过程里是写
#2
你在执行一条语句的这一个方法中,这个方法创建了独立的connection、command,却说它要控制别的connection、command,这是非常自相矛盾的概念。
一条语句如果在事务中,那么你的ExecuteSql方法就应该以DBTransaction为参数(因为由此就可以找到DBConnection,所以不需要DBConnection参数)。
事务的概念是什么?是以单个语句的范畴来实现的吗?
一条语句如果在事务中,那么你的ExecuteSql方法就应该以DBTransaction为参数(因为由此就可以找到DBConnection,所以不需要DBConnection参数)。
事务的概念是什么?是以单个语句的范畴来实现的吗?
#3
数据库读写操作类,怎么封装事务?
#4
你可以在执行存储过程或者程序以前,用tran.begin;然后在这中间的所有的数据库的操作都用同一个command,等所有的数据库都执行完成了,执行tran.commit;,前提是,你在数据库的操作中,不能进行commit提交,所有的提交都交给事务处理
#5
在初步设计软件之前,要把概念的父子关系搞清楚。如果父子关系搞反了,就会写出非常蹩脚的程序。
#6
可以考虑以下实现方式:
1.sql语句中begin tran.
2.Connection对象.BeginTransaction
3.TransactionScope(分布式事物用的较多)
1.sql语句中begin tran.
2.Connection对象.BeginTransaction
3.TransactionScope(分布式事物用的较多)
#7
事物:执行多条命令,要么全部执行,要么全部执行。
#8
可能大家没有明白我的意思,我说清一点点。
现在我写了一个数据库读写操作类DBBase:
如果参数是一条sql语句,可以直接调用DBBase的ExecuteSql方法。但如果是事务,添加一个操作事务的方法,这个方法应该怎么写?将什么作为参数传入?
不知道这回说清楚了没有?
现在我写了一个数据库读写操作类DBBase:
public Class DBBase
{
string connectionString = "***";
//操作sql语句
public bool ExecuteSql(string sql)
{
bool result = false;
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(sql,connection);
connection.Open();
int i = Convert.ToInt32(cmd.ExecuteNonQuery());
if(i == 1)
result = true;
if(cmd != null)
{
cmd.Cancel();
cmd.Dispose();
}
if(connection != null)
{
connection.Close();
connection.Dispose();
}
return result;
}
}
//调用DBBase
DBBase db = new DBBase();
string sql = "delete from tableUser where id = 1";
bool result = db.ExecuteSql();
如果参数是一条sql语句,可以直接调用DBBase的ExecuteSql方法。但如果是事务,添加一个操作事务的方法,这个方法应该怎么写?将什么作为参数传入?
不知道这回说清楚了没有?
#1
不明白你的需求
要写事务可以直接在前台写.或是在后过程里是写
要写事务可以直接在前台写.或是在后过程里是写
#2
你在执行一条语句的这一个方法中,这个方法创建了独立的connection、command,却说它要控制别的connection、command,这是非常自相矛盾的概念。
一条语句如果在事务中,那么你的ExecuteSql方法就应该以DBTransaction为参数(因为由此就可以找到DBConnection,所以不需要DBConnection参数)。
事务的概念是什么?是以单个语句的范畴来实现的吗?
一条语句如果在事务中,那么你的ExecuteSql方法就应该以DBTransaction为参数(因为由此就可以找到DBConnection,所以不需要DBConnection参数)。
事务的概念是什么?是以单个语句的范畴来实现的吗?
#3
数据库读写操作类,怎么封装事务?
#4
你可以在执行存储过程或者程序以前,用tran.begin;然后在这中间的所有的数据库的操作都用同一个command,等所有的数据库都执行完成了,执行tran.commit;,前提是,你在数据库的操作中,不能进行commit提交,所有的提交都交给事务处理
#5
在初步设计软件之前,要把概念的父子关系搞清楚。如果父子关系搞反了,就会写出非常蹩脚的程序。
#6
可以考虑以下实现方式:
1.sql语句中begin tran.
2.Connection对象.BeginTransaction
3.TransactionScope(分布式事物用的较多)
1.sql语句中begin tran.
2.Connection对象.BeginTransaction
3.TransactionScope(分布式事物用的较多)
#7
事物:执行多条命令,要么全部执行,要么全部执行。
#8
可能大家没有明白我的意思,我说清一点点。
现在我写了一个数据库读写操作类DBBase:
如果参数是一条sql语句,可以直接调用DBBase的ExecuteSql方法。但如果是事务,添加一个操作事务的方法,这个方法应该怎么写?将什么作为参数传入?
不知道这回说清楚了没有?
现在我写了一个数据库读写操作类DBBase:
public Class DBBase
{
string connectionString = "***";
//操作sql语句
public bool ExecuteSql(string sql)
{
bool result = false;
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(sql,connection);
connection.Open();
int i = Convert.ToInt32(cmd.ExecuteNonQuery());
if(i == 1)
result = true;
if(cmd != null)
{
cmd.Cancel();
cmd.Dispose();
}
if(connection != null)
{
connection.Close();
connection.Dispose();
}
return result;
}
}
//调用DBBase
DBBase db = new DBBase();
string sql = "delete from tableUser where id = 1";
bool result = db.ExecuteSql();
如果参数是一条sql语句,可以直接调用DBBase的ExecuteSql方法。但如果是事务,添加一个操作事务的方法,这个方法应该怎么写?将什么作为参数传入?
不知道这回说清楚了没有?