110,535
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 数据库操作类,继承自SqlConfig类.
/// </summary>
public class ToolsSqlDataBase:SqlConfig
{
private SqlConnection _SQLConn = new SqlConnection();
/// <summary>
/// 建立连接对象
/// </summary>
/// <returns>true 建立连接对象成功,false建立连接对象失败</returns>
public bool ConnectDataBase()
{
try
{
this.SQLConn.ConnectionString = this.GetConnectionString();
this.SQLConn.Open();
return true;
}
catch (Exception ex)
{
this.OnErrEventHandler(this, ex.StackTrace, ex.Message);
return false;
}
}
/// <summary>
/// 释放连接对象
/// </summary>
private void DistroySQLCon()
{
try
{
if (this.SQLConn.State != System.Data.ConnectionState.Closed)
this.SQLConn.Close();
this.SQLConn.Dispose();
//this.SQLConn = null;
}
catch
{
//this.SQLConn = null;
}
//GC.Collect();
}
/// <summary>
/// 执行sql语句,返回影响行数
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns>返回影响行数,-1表示执行失败</returns>
public int ExcuteNonQuery(string sql)
{
int _ReturnNumber = -1;
try
{
if (this.SQLConn.State != System.Data.ConnectionState.Open)
{
this.ConnectDataBase();
}
SqlCommand cmd = new SqlCommand(sql, this.SQLConn);
_ReturnNumber = cmd.ExecuteNonQuery();
cmd.Dispose();
}
catch (Exception ex)
{
this.OnErrEventHandler(this, ex.StackTrace, ex.Message);
}
return _ReturnNumber ;
}
/// <summary>
/// 执行一个添加,删除,修改语句,同时支持事物
/// </summary>
/// <param name="sql">需要执行sql语句</param>
/// <param name="sqltrans">事物</param>
/// <returns>返回影响行数,-1表示执行失败</returns>
public int ExcuteNonQuery(string sql, SqlTransaction sqltrans)
{
int _ReturnNumber = -1;
try
{
if (this.SQLConn.State != System.Data.ConnectionState.Open)
{
this.ConnectDataBase();
}
SqlCommand cmd = new SqlCommand(sql, this.SQLConn,sqltrans);
_ReturnNumber = cmd.ExecuteNonQuery();
cmd.Dispose();
}
catch (Exception ex)
{
this.OnErrEventHandler(this, ex.StackTrace, ex.Message);
}
return _ReturnNumber;
}
/// <summary>
/// 执行查询返回一个纪录集
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns>不论执行成功或者执行失败都将返回一个DataSet对象</returns>
public System.Data.DataSet QuerySQL(string sql)
{
DataSet _ReturnDataSet = new DataSet();
try
{
if (this.SQLConn.State != ConnectionState.Open)
{
this.ConnectDataBase();
}
SqlCommand _SqlCommand = new SqlCommand(sql,this.SQLConn);
SqlDataAdapter _SqlDataAdapter = new SqlDataAdapter(_SqlCommand);
_SqlCommand.ExecuteNonQuery();
_SqlDataAdapter.Fill(_ReturnDataSet);
}
catch (Exception ex)
{
this.OnErrEventHandler(this, ex.StackTrace, ex.Message);
}
return _ReturnDataSet;
}
/// <summary>
/// 执行查询返回一个纪录集,带事务
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <param name="sqlstran">事务</param>
/// <returns>不论执行成功或者执行失败都将返回一个DataSet对象</returns>
public DataSet QuerySQL(string sql, SqlTransaction sqlstran)
{
DataSet _ReturnDataSet = new DataSet();
try
{
if (this.SQLConn.State != ConnectionState.Open)
{
this.ConnectDataBase();
}
SqlCommand _SqlCommand = new SqlCommand(sql, this.SQLConn,sqlstran);
SqlDataAdapter _SqlDataAdapter = new SqlDataAdapter(_SqlCommand);
_SqlCommand.ExecuteNonQuery();
_SqlDataAdapter.Fill(_ReturnDataSet);
}
catch (Exception ex)
{
this.OnErrEventHandler(this, ex.StackTrace, ex.Message);
}
return _ReturnDataSet;
}
/// <summary>
/// 查询一个有行的表,带事务
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <param name="sqlstran"事务></param>
/// <returns></returns>
public DataTable QueryDataTable(string sql, SqlTransaction sqlstran)
{
DataSet ds = QuerySQL(sql, sqlstran);
if (ds != null)
{
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
return ds.Tables[0];
}
}
return null;
}
/// <summary>
/// 执行查询返回一个包含有行的纪录集。
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns>如果查询结构没有数据则返回一个null</returns>
public System.Data.DataSet QuerySQLValid(string sql)
{
DataSet _ReturnDataSet = this.QuerySQL(sql);
if (_ReturnDataSet.Tables.Count > 0)
{
//检测某个纪录集中是否包含有数据行
for (int i = 0; i < _ReturnDataSet.Tables.Count; i++)
{
if (_ReturnDataSet.Tables[i].Rows.Count > 0)
{
return _ReturnDataSet;
}
}
}
return null;
}
/// <summary>
/// 执行查询,返回一个DataTable对象,如果遇到多个记录集则返回第一个,该方法始终都会返回一个有效的DataTable对象.但不一定都包含数据;
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns>返回一个DataTable对象,如果遇到多个记录集则返回第一个,该方法始终都会返回一个有效的DataTable对象.但不一定都包含数据</returns>
public DataTable QuerySQLDataTable(string sql)
{
DataTable _ReturnDataTable = new DataTable() ;
DataSet _DataSet = this.QuerySQL(sql);
if (_DataSet.Tables.Count > 0)
{
_ReturnDataTable = _DataSet.Tables[0];
}
return _ReturnDataTable;
}
/// <summary>
/// 执行查询返回一个包含有行的纪录集。
/// </summary>
/// <param name="sql">需要查询的sql语句</param>
/// <param name="stran">事务</param>
/// <returns>返回一个DataTable对象,如果遇到多个记录集则返回第一个,该方法始终都会返回一个包含数据行的DataTable对象,否则返回null</returns>
public DataTable QuerySQLDataTable(string sql, SqlTransaction stran)
{
DataSet ds = this.QuerySQL(sql, stran);
if (ds != null)
{
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
return ds.Tables[0];
}
}
return null;
}
/// <summary>
/// 执行一个带参数的sql语句,如果查询记录集中包含行则返回一个DataTable对象,否则返回一个null
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <param name="Parameter">执行的sql中的参数</param>
/// <returns>如果查询记录集中包含行则返回一个DataTable对象,否则返回一个null</returns>
public DataTable QuerySQLDataTable(string sql, SqlParameter Parameter)
{
DataSet _ReturnDataSet = QuerySQLDataSet(sql, Parameter);
if (_ReturnDataSet.Tables.Count > 0)
{
if (_ReturnDataSet.Tables[0].Rows.Count > 0)
{
return _ReturnDataSet.Tables[0];
}
}
return null;
}