在线!我写的数据库模块,但是在用到事务的时候不知道怎么用了,有代码,大家帮帮忙,月底就要交活了

godblessyU 2003-10-16 10:57:11
我想在别的cs文件中写事务,但是又用到下面的这个类,如何用啊,最好有实例
namespace ado
{
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Configuration;


public class adoClass
{
private static string strConn="server=localhost;uid=sa;pwd=;database=ddd";

//*****************************************************************************************
//****** 功能名:GetMyDataReader(string strSQL)
//****** 参数意义:string strSQL sql语句
//****** 功能描述:返回 SqlDataReader类型
//****** 日期:2003-9-5 设计: 修改:
//*****************************************************************************************
public static SqlDataReader GetMyDataReader(string strSQL)
{
SqlConnection objConnection = new SqlConnection(strConn);
SqlCommand objCommand = new SqlCommand(strSQL,objConnection);
objConnection.Open();
SqlDataReader objReader;
objReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
return objReader;
}


//*****************************************************************************************
//****** 功能名:GetMyDataSet(string strSQL,string strTable)
//****** 参数意义:string strSQL sql语句,string strTable dataset中的表名
//****** 功能描述:返回dataset
//****** 日期:2003-9-5 设计: 修改:
//*****************************************************************************************
public static DataSet GetMyDataSet(string strSQL,string strTable)
{
SqlConnection objConnection = new SqlConnection(strConn);
SqlDataAdapter objAdapter = new SqlDataAdapter(strSQL,objConnection);
DataSet ds = new DataSet();
objAdapter.Fill(ds,strTable);
return ds;
}


//*****************************************************************************************
//****** 功能名:GetMyAdapter(string strSQL)
//****** 参数意义:string strSQL sql语句
//****** 功能描述:返回SqlDataAdapter
//****** 日期:2003-9-5 设计: 修改:
//*****************************************************************************************
public static SqlDataAdapter GetMyAdapter(string strSQL)
{
SqlConnection objConnection = new SqlConnection(strConn);
SqlDataAdapter objAdapter = new SqlDataAdapter(strSQL,objConnection);
return objAdapter;
}


//*****************************************************************************************
//****** 功能名:GetCountByTable(string txtTable)
//****** 参数意义:string txtTable 表名
//****** 功能描述:返回该表中的记录总数
//****** 日期:2003-9-5 设计: 修改:
//*****************************************************************************************
public static string GetCountByTable(string txtTable)
{
string strCountNum;
//int intCountNum=0;
SqlConnection objConnection = new SqlConnection(strConn);
SqlCommand objCommand=new SqlCommand("select count(*) from "+txtTable,objConnection);
objCommand.Connection.Open();
strCountNum=objCommand.ExecuteScalar().ToString();
objCommand.Connection.Close();
return strCountNum;
}


//*****************************************************************************************
//****** 功能名:GetCountByCmd(string strSQL)
//****** 参数意义:string strSQL sql语句
//****** 功能描述:获得符合sql语句的记录总数
//****** 日期:2003-9-5 设计: 修改:
//*****************************************************************************************
public static int GetCountByCmd(string strSQL)
{
int intCountNum=0;
SqlConnection objConnection = new SqlConnection(strConn);
SqlCommand objCommand=new SqlCommand(strSQL,objConnection);
objCommand.Connection.Open();
intCountNum=(int) objCommand.ExecuteScalar();
objCommand.Connection.Close();
return intCountNum;
}


//*****************************************************************************************
//****** 功能名:GetString(string strSQL)
//****** 参数意义:string strSQL sql语句
//****** 功能描述:获得符合sql语句中的一条记录
//****** 日期:2003-9-5 设计: 修改:
//*****************************************************************************************
public static string GetString(string strSQL)
{
string strCountNum=null;
SqlConnection objConnection = new SqlConnection(strConn);
SqlCommand objCommand=new SqlCommand(strSQL,objConnection);
objCommand.Connection.Open();
strCountNum=objCommand.ExecuteScalar().ToString();
objCommand.Connection.Close();
return strCountNum;
}


//*****************************************************************************************
//****** 功能名:NonQuery(string strSQL)
//****** 参数意义:string strSQL sql语句
//****** 功能描述:执行sql语句
//****** 日期:2003-9-5 设计: 修改:
//*****************************************************************************************
public static void NonQuery(string strSQL)
{
SqlConnection objConnection = new SqlConnection(strConn);
SqlCommand objCommand=new SqlCommand(strSQL,objConnection);
objCommand.Connection.Open();
objCommand.ExecuteNonQuery();
objCommand.Connection.Close();
}

}
}
...全文
56 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dudejava 2003-10-16
  • 打赏
  • 举报
回复
你写的数据模块比较的设计有问题,我简单的改了一下,事务用单例模式维护。如果程序是多线成的运行,下面的代码会有些问题。如果是C/S结构的话,客户端通常一个连接对象就足够了。
namespace ado
{
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Configuration;


public class adoClass
{

private static SqlConnection objConnection = new SqlConnection("server=localhost;uid=sa;pwd=;database=ddd");
private static SqlTransaction trans;

public static void BeginTransaction()
{
if(trans !=null)//包含有未处理完的事务
{
//............你自己处理吧.............
return;
}
if(objConnection.State != System.Data.ConnectionState.Open)
{
objConnection .CONNECT.Open();
}
trans=objConnection .BeginTransaction();
}

public static void Commit()
{
if(trans != null)
{
trans.Commit();
trans=null;
}
}

public static void Rollback()
{
if(trans != null)
{
trans.Rollback();
trans=null;
}

}




//*****************************************************************************************
//****** 功能名:GetMyDataReader(string strSQL)
//****** 参数意义:string strSQL sql语句
//****** 功能描述:返回 SqlDataReader类型
//****** 日期:2003-9-5 设计: 修改:
//*****************************************************************************************
public static SqlDataReader GetMyDataReader(string strSQL)
{

SqlCommand objCommand = new SqlCommand(strSQL,objConnection);
objCommand.Transaction=adoClass.trans;
objConnection.Open();
SqlDataReader objReader;
objReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
return objReader;
}


//*****************************************************************************************
//****** 功能名:GetMyDataSet(string strSQL,string strTable)
//****** 参数意义:string strSQL sql语句,string strTable dataset中的表名
//****** 功能描述:返回dataset
//****** 日期:2003-9-5 设计: 修改:
//*****************************************************************************************
public static DataSet GetMyDataSet(string strSQL,string strTable)
{

SqlDataAdapter objAdapter = new SqlDataAdapter(strSQL,objConnection);
DataSet ds = new DataSet();
objAdapter.Fill(ds,strTable);
return ds;
}


//*****************************************************************************************
//****** 功能名:GetMyAdapter(string strSQL)
//****** 参数意义:string strSQL sql语句
//****** 功能描述:返回SqlDataAdapter
//****** 日期:2003-9-5 设计: 修改:
//*****************************************************************************************
public static SqlDataAdapter GetMyAdapter(string strSQL)
{
SqlConnection objConnection = new SqlConnection(strConn);
SqlDataAdapter objAdapter = new SqlDataAdapter(strSQL,objConnection);
objAdapter.SelectCommand.Transaction=adoClass.trans();
return objAdapter;
}
CSTerry 2003-10-16
  • 打赏
  • 举报
回复
SqlConnection myConnection = new SqlConnection(adoClass.strConn);
myConnection.Open();

SqlTransaction myTrans = myConnection.BeginTransaction();
SqlCommand myCommand = new SqlCommand();
myCommand.Transaction = myTrans;
myCommand.Connection =myConnection;

sql="your sql";
myCommand.CommandText =sql;
myCommand.ExecuteNonQuery();
……
sql="your sql";
myCommand.CommandText =sql;
myCommand.ExecuteNonQuery();
……

myTrans.Commit();
myConnection.Close();

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧