using System;using System.Data;using System.Data.SqlClient;
namespace llin.DataOperate.Sql{ /// <summary> /// DbOperate 的摘要说明。 /// </summary> public class DbOperate { private System.Data.SqlClient.SqlConnection SqlConnection=null; private System.Data.SqlClient.SqlTransaction SqlTransaction=null; public System.Data.SqlClient.SqlCommand paramCommand=null;//用于带参数的SqlCommand类对象 /// <summary> /// 与数据库连接的当前状态 /// </summary> public System.Data.ConnectionState State { get { return SqlConnection.State; } }
public DbOperate() { // // TODO: 在此处添加构造函数逻辑 // SqlConnection=new SqlConnection(); }
public DbOperate(string strConn) { SqlConnection=new SqlConnection(strConn); paramCommand=SqlConnection.CreateCommand(); } ///<summary> ///打开与数据库中的连接 ///</summary> public void Open() { try { if(this.State==System.Data.ConnectionState.Closed) { this.SqlConnection.Open(); } } catch(Exception) {} }
///<summary> ///关闭与数据库的连接 ///</summary> public void Close() { try { if(this.State!=System.Data.ConnectionState.Closed) { this.SqlConnection.Close(); } } catch(Exception) {} }
/// <summary> /// 更新数据集 /// </summary> /// <param name="dataSet"></param> /// <returns></returns> public bool UpdateDataSet(DataSet dataSet,string selectString) { try { SqlDataAdapter da=new SqlDataAdapter(selectString,this.SqlConnection); SqlCommandBuilder builder=new SqlCommandBuilder(da); if(this.SqlTransaction!=null) { da.SelectCommand.Transaction=this.SqlTransaction; da.InsertCommand.Transaction=this.SqlTransaction; da.UpdateCommand.Transaction=this.SqlTransaction; da.DeleteCommand.Transaction=this.SqlTransaction; } if(dataSet.HasChanges(DataRowState.Added)) { DataSet ds=dataSet.GetChanges(DataRowState.Added); da.Update(ds); } if(dataSet.HasChanges(DataRowState.Modified)) { DataSet ds=dataSet.GetChanges(DataRowState.Modified); da.Update(ds); }
if(dataSet.HasChanges(DataRowState.Deleted)) { DataSet ds=dataSet.GetChanges(DataRowState.Deleted); da.Update(ds); } return true; } catch(Exception ex) { throw ex; } }
///<summary> ///开始事务 ///</summary> public void BeginTrans() { try { this.Open(); this.SqlTransaction=this.SqlConnection.BeginTransaction(); } catch(Exception) {} }
///<summary> ///执行事务 ///</summary> public void CommitTrans() { try { this.SqlTransaction.Commit(); this.Close(); } catch(Exception) {} }
///<summary> ///回滚事务 ///</summary> public void RollBackTrans() { try { this.SqlTransaction.Rollback(); this.Close(); } catch(Exception) {} }
///<summary> ///清理所有正在使用的资源 ///</summary> public void Dispose() { this.Close(); GC.SuppressFinalize(true); }
///<summary> ///返回满足特定条件的记录数 ///</summary> ///<param name=sqlString>select count(*) from table where...</param> ///<returns></returns> public int GetRecordCount(string sqlString) { int number=-1; SqlCommand command=new SqlCommand(sqlString,this.SqlConnection); command.Transaction=this.SqlTransaction; try { this.Open(); number=Convert.ToInt32(command.ExecuteScalar().ToString()); } catch(Exception) {} return number; }
///<summary> ///增强数据适配器 ///</summary> public void BuildAdapter(SqlDataAdapter adapter) { SqlCommandBuilder builder=new SqlCommandBuilder(adapter); adapter.DeleteCommand=builder.GetDeleteCommand(); adapter.InsertCommand=builder.GetInsertCommand(); adapter.UpdateCommand=builder.GetUpdateCommand(); }
///<summary> ///数据适配器在事务中提交更新 ///</summary> public void UpdateAdapter(string sqlString) { DataTable tbl=new DataTable(); SqlDataAdapter da=new SqlDataAdapter(sqlString,this.SqlConnection);
this.Open(); da.Fill(tbl); SqlTransaction txn=this.SqlConnection.BeginTransaction(); try { da.UpdateCommand.Transaction=txn; da.InsertCommand.Transaction=txn; da.DeleteCommand.Transaction=txn;
//提交更改 da.Update(tbl);
//接受更改 txn.Commit(); this.Close(); } catch(Exception) { txn.Rollback(); this.Close(); } }
///<summary> ///向数据库中提交查询,返回一个dataSet ///</summary> public DataSet ExecuteSelect(string sqlString) { DataSet dataSet=new DataSet(); SqlDataAdapter da=new SqlDataAdapter(sqlString,this.SqlConnection); da.SelectCommand.Transaction=this.SqlTransaction; da.Fill(dataSet); return dataSet; }
public DataSet ExecuteSelect(string sqlString,string tableName) { DataSet dataSet=new DataSet(); SqlDataAdapter da=new SqlDataAdapter(sqlString,this.SqlConnection); da.SelectCommand.Transaction=this.SqlTransaction; da.Fill(dataSet,tableName); return dataSet; }
///<summary> ///向数据库中提交更新 ///</summary> ///<param name="sqlString">插入、修改、删除的SQL语句</param> ///<returns>成功时返回0,失败时返回-1</returns> public int ExecuteUpdate(string sqlString) { try { this.Open(); SqlCommand command=this.SqlConnection.CreateCommand(); command.CommandText=sqlString; if(this.SqlTransaction!=null) { command.Transaction=this.SqlTransaction; } int lines=command.ExecuteNonQuery(); return lines; } catch(Exception e) { throw e; } } /// <summary> /// 通过一个SELECT语句,判断返回的记录集是否为空 /// </summary> /// <param name="selectString"></param> /// <returns>如果有记录返回true,否则返回false</returns> public bool HasRecord(string selectString) { try { this.Open(); SqlCommand command=this.SqlConnection.CreateCommand(); command.CommandText=selectString; command.Transaction=this.SqlTransaction; SqlDataReader reader=command.ExecuteReader(); if(reader.Read()) { reader.Close(); return true; } else { reader.Close(); return false; }
} catch(Exception e) { throw e; } }
/// <summary> /// 通过一个选择单列的SQL语句,返回所取的值 /// </summary> /// <param name="?"></param> /// <returns></returns> public object getValue(string selectString) { try { this.Open(); SqlCommand command=this.SqlConnection.CreateCommand(); command.CommandText=selectString; command.Transaction=this.SqlTransaction; object obj=command.ExecuteScalar(); return obj; } catch(Exception e) { throw e; } }
/// <summary> /// 用于带参数的数据库更新语句 /// </summary> /// <param name="sqlString"></param> /// <returns></returns> public int ParamUpdate(string sqlString) { try { this.Open(); if(this.SqlTransaction!=null) { this.paramCommand.Transaction=this.SqlTransaction; } int lines=this.paramCommand.ExecuteNonQuery(); return lines; } catch(Exception e) { throw e; } } }}