自己写的一个数据类,有异常,大家指点
using System;using System.Data ;
using System.Data.OleDb ;
namespace EIP.SQLconn
{
public class DataAccess
{
private OleDbConnection OleConnString ;
private OleDbTransaction trans ;
/******************************************************************************
* FunName : ExecSqlInTrans
* Input : strSqls
* Return : bool
* Describe :
* This function is to execute a set of sql strings splitted by ";", such as
* "insert into acl values('admin','UserMng');insert into acl values('Jason','LogMng')" ;
*
* In the example as up, the function can execute two sql strings in one transaction. when
* one sql string executing is failure, the two executing will both rollback to the old
* state.
*
* ****************************************************************************/
public bool ExecSqlInTrans(string strSqls)
{
OleConnString = GetConnect() ;
OleDbCommand OleCmd = new OleDbCommand("",OleConnString) ;
OleConnString.Open() ;
trans = OleConnString.BeginTransaction() ;
OleCmd.Transaction = trans ;
try
{
int i = 0 ;
string[] strSql = strSqls.Split(';') ;
for(i=0;i<strSql.Length;i++)
{
OleCmd.CommandText = strSql[i] ;
if(OleCmd.ExecuteNonQuery() < 0)
{
OleCmd.Transaction.Rollback() ;
return false ;
}
}
OleCmd.Transaction.Commit() ;
return true ;
}
catch
{
OleCmd.Transaction.Rollback() ;
return false ;
}
finally
{
OleConnString.Close() ;
}
}
/******************************************************************************
* FunName : GetConnect
* Input :
* Return : OleDbConnection
* Describe :
* Create the database connection and return OleDbConnection.
*
* ****************************************************************************/
public OleDbConnection GetConnect()
{
string strOleSqlConn = System.Configuration.ConfigurationSettings.AppSettings["Connection"] ;
OleConnString = new OleDbConnection(strOleSqlConn) ;
return OleConnString ;
}
/******************************************************************************
* FunName : GetDataReader
* Input : strSql
* Return : OleDbDataReader
* Describe :
* Execute the query and return OleDbDataReader.
*
* ****************************************************************************/
public OleDbDataReader GetDataReader(string strSql)
{
OleConnString = GetConnect() ;
OleConnString.Open() ;
try
{
OleDbCommand OleCmd = new OleDbCommand(strSql,OleConnString) ;
OleDbDataReader OleDr = OleCmd.ExecuteReader() ;
return OleDr ;
}
finally
{
OleConnString.Close() ;
}
}
/******************************************************************************
* FunName : GetDataSet
* Input : strSql
* Return : DataSet
* Describe :
* Execute the query and return DataSet.
*
* ****************************************************************************/
public DataSet GetDataSet(string strSql)
{
OleConnString = GetConnect() ;
OleConnString.Open() ;
try
{
DataSet OleDs = new DataSet() ;
OleDbDataAdapter OleDa = new OleDbDataAdapter(strSql,OleConnString) ;
OleDa.Fill(OleDs) ;
return OleDs ;
}
finally
{
OleConnString.Close() ;
}
}
/******************************************************************************
* FunName : CreateDataView
* Input : strSql
* Return : DataView
* Describe :
* Execute the query and return DataView.
*
* ****************************************************************************/
public DataView CreateDataView(string strSql)
{
OleConnString = GetConnect() ;
OleConnString.Open() ;
try
{
DataSet DS = new DataSet() ;
OleDbDataAdapter OleDa = new OleDbDataAdapter(strSql,OleConnString) ;
OleDa.Fill(DS) ;
DataView DV = new DataView() ;
DV.Table = DS.Tables[0] ;
return DV ;
}
finally
{
OleConnString.Close() ;
}
}
/******************************************************************************
* FunName : CreateDataTable
* Input : strSql
* Return : CreateDataTable
* Describe :
* Execute the query and return CreateDataTable.
*
* ****************************************************************************/
public DataTable CreateDataTable(string strSql)
{
OleConnString = GetConnect() ;
OleConnString.Open() ;
try
{
DataSet DS = new DataSet() ;
OleDbDataAdapter OleDa = new OleDbDataAdapter(strSql,OleConnString) ;
OleDa.Fill(DS) ;
DataTable DT = new DataTable() ;
DT = DS.Tables[0] ;
return DT ;
}
finally
{
OleConnString.Close() ;
}
}
/******************************************************************************
* FunName : ExecSql
* Input : strSql
* Return : bool
* if ture, successful;if false, failure
* Describe :
* Execute the query.
*
* ****************************************************************************/
public bool ExecSql(string strSql)
{
OleConnString = GetConnect() ;
OleConnString.Open();
OleDbCommand OleCmd = new OleDbCommand(strSql,OleConnString) ;
try
{
if( OleCmd.ExecuteNonQuery() > 0)
{
return true ;
}
else
{
return false ;
}
}
catch
{
return false ;
}
finally
{
OleConnString.Close() ;
}
}
/******************************************************************************
* FunName : GetIntFromDataReader
* Input : strSql
* Return : int
* Describe :
* Execute the query and return int.
*
* ****************************************************************************/
public int GetIntFromDataReader(string strSql)
{
// string sql="";
// sql="select count(*) from BBS";
// EIP.SQLconn.DataAccess DataAs = new EIP.SQLconn.DataAccess();
OleConnString = GetConnect() ;
OleConnString.Open() ;
try
{
OleDbCommand OleCmd = new OleDbCommand(strSql,OleConnString) ;
OleDbDataReader OleDr = OleCmd.ExecuteReader() ;
OleDr.Read();
int i = OleDr.GetInt32(0);
OleDr.Close();
return i;
}
finally
{
OleConnString.Close() ;
}
}
}
}
//System.InvalidOperationException;
//System.Data.OleDb.OleDbException;
if( OleCmd.ExecuteNonQuery() > 0):异常是//System.InvalidOperationException 高手帮忙看看 public OleDbConnection GetConnect()
{
string strOleSqlConn = System.Configuration.ConfigurationSettings.AppSettings["Connection"] ;
if (OleConnString == null)
{
OleConnString = new OleDbConnection(strOleSqlConn);
}
OleConnString = new OleDbConnection(strOleSqlConn) ;
return OleConnString ;
}
open这里判断下
if (OleConnString .State == System.Data.ConnectionState.Closed)
OleConnString .Open(); public OleDbConnection GetConnect()
最好用void
本类操作不需要返回 没用啊 ,还是一样的 ,晕倒啊 [tk05] 苦恼啊 你断点设置看下异常catch到的是什么内容~还有你oledb操作的是什么?execl?
回复 10# 的帖子
光标点到OleConnString.Open();这个方法时时就有 下面两个异常//System.InvalidOperationException;
//System.Data.OleDb.OleDbException;
if( OleCmd.ExecuteNonQuery() > 0):也是一样
异常是//System.InvalidOperationException SQL2000数据库 sql2000为何不用system.data.sqlclient命名空间啊
回复 13# 的帖子
因为我的参考书上是用OLEDB其实我自己也觉得SQLCLIENT舒服些 构造OleConnString对象的时候你没有提供CommandText就直接来了个Open(),不行的回复 15# 的帖子
呀,是真的不,你肯定不,OPEN前就要提供?,但是我在调用这个类的时候,比如像public bool ExecSql(string strSql)函数时,有时是成功的,但有时又报错, 结贴咯,这个类没做错,是我自己多心咯,哈哈,还是要好好学习啊页:
[1]
