The code that the C # operations database is about.

Source: Internet
Author: User

Manipulate the database of that point of code, do not bother every database to write once Sqlhelper,sqlitehelper,oledbhelper,, here are all.

The interface is not sent, you can extract the definition on the line.

Public abstract class Dbhelperbase:idbhelper {//<summary>/////</summar            y>//<param name= "connstr" ></param> public dbhelperbase (string connstr) {            _connstr = ConnStr;            _lockexecnonquery = new Object ();            _lockgetdatareader = new Object ();            _lockgetscalar = new Object ();        _lockgetdataset = new Object ();        }///<summary>///connection string///</summary> protected string _connstr;        <summary>//whether business///</summary> bool _istrans = false;        Object _lockexecnonquery;        Object _lockgetdatareader;        Object _lockgetscalar;        Object _lockgetdataset;        Protected abstract DbConnection dbconnectionobj {get;}        Protected abstract DbCommand dbcommandobj {get;}        Protected abstract DbDataAdapter dbdataadapterobj {get;} Protected DbtransactIon Dbtransobj;            <summary>///Current connection///</summary> public DbConnection currentconnection {            get {return dbconnectionobj; }}///<summary>///Execute SQL Q Error Write log method///</summary> protected virtual void W Riteerrlog (Exception Ex, String sqltext, params dbparameter[] param) {stringplus logs = new Stringplus (            ); Logs.            Appendline ("SQL text:"); Logs.            Appendline (SQLTEXT); Logs.            Appendline ("SQL text parameter:"); if (param! = null) {foreach (DbParameter item in param) {log S.appendspaceline (1, "parameter name: {0}, parameter value: {1}", item. ParameterName, item.                Value); }} logs.            Appendline ("Original error:"); Logs. Appendline (ex.            Message); Loghelper.writelog ("Dberrorlog", logs.        ToString ()); }//<summary>///Open connection, if it is already open, nothing is done.//</summary> protected virtual void OpenConnection () {if (D                Bconnectionobj.state! = ConnectionState.Open) {dbconnectionobj.connectionstring = _connstr;            Dbconnectionobj.open (); }}///<summary>///close connection if no start transaction or connection is turned off///</summary> void Closeconne                CT () {if (!_istrans) {if (dbconnectionobj.state = = ConnectionState.Open)                    {Dbconnectionobj.close ();                Dbconnectionobj.dispose ();        }}}///<summary> assign value to current DbCommand object, and OpenConnection ();         </summary> void Setcommandandopenconnect (String sqltext, CommandType cmdtype, params dbparameter[] param)            {//Ordinarily assigned connection,commandtype, Dbcommandobj.commandtype = Cmdtype without multiple assignments; DBcommandobj.connection = Dbconnectionobj;            DbCommandObj.Parameters.Clear ();            if (param! = null) {DbCommandObj.Parameters.AddRange (param);            } dbcommandobj.commandtext = SQLText;        OpenConnection ();        }///<summary>//Start execution of transactions///</summary> public virtual void Transstart ()            {OpenConnection ();            Dbtransobj = Dbconnectionobj.begintransaction ();            Dbcommandobj.transaction = Dbtransobj;        _istrans = true;             }///<summary>//Transaction submission///</summary> public virtual void Transcommit () {            _istrans = false;            Dbtransobj.commit ();        Closeconnect ();        }///<summary>//Transaction rollback///</summary> public virtual void Transrollback ()            {_istrans = false;            Dbtransobj.rollback (); ClosEconnect (); }///<summary>///execute a SQL statement that specifies the type of command (SQL statement or stored procedure, etc.) that returns the number of rows affected///</summary> Public VI rtual int Execnonquery (string sqltext, CommandType cmdtype, params dbparameter[] param) {Lock (_lockexe Cnonquery) {try {setcommandandopenconnect (sqltext, Cmdtype,                    param);                return Dbcommandobj.executenonquery ();                    } catch (Exception ex) {Writeerrlog (ex, SQLText, Param);                throw new Dbdataexception ();                } finally {Closeconnect (); }}}///<summary> execute a command of a plain SQL statement, returning the number of rows affected///</summary> PU  Blic virtual int Execnonquery (string sqltext, params dbparameter[] param) {return execnonquery (SQLText,  CommandType.Text, param);      }//<summary>//Get DataReader Objects///</summary> public virtual DbD        Atareader Getdatareader (String sqltext, CommandType cmdtype, CommandBehavior Cmdbehavior, params dbparameter[] param) {Lock (_lockgetdatareader) {try {Setcommandan                    Dopenconnect (SQLText, Cmdtype, param);                    DbDataReader dbreader = Dbcommandobj.executereader (Cmdbehavior);                return dbreader;                    } catch (Exception ex) {Writeerrlog (ex, SQLText, Param);                throw new Dbdataexception ();                    } finally {//datareader is closed with Dbreader object, even if non-transactional, do not cancel the comment                Closeconnect (); }}}///<summary>//Get DataReader Objects///</summary> public vir Tual DbdatarEader Getdatareader (String sqltext, CommandType cmdtype, params dbparameter[] param) {CommandBehavior c            Mdbehavior;            if (_istrans) {cmdbehavior = Commandbehavior.default; } else {//non-transactional, close DataReader closes the current connection Cmdbehavior = Commandbehavior.clos            Econnection;        } return Getdatareader (SQLText, Cmdtype, Cmdbehavior, param); }///<summary>//Execute SQL Statement return DataReader object///</summary> public virtual Dbdataread Er getdatareader (string sqltext, params dbparameter[] param) {return getdatareader (SQLText, CommandType .        Text, param); }//<summary>///Get First line column///</summary> Public virtual Object Getscalar (string s                Qltext, CommandType cmdtype, params dbparameter[] param) {lock (_lockgetscalar) {  try {                  Setcommandandopenconnect (SQLText, Cmdtype, param);                return Dbcommandobj.executescalar ();                    } catch (Exception ex) {Writeerrlog (ex, SQLText, Param);                throw new Dbdataexception ();                } finally {Closeconnect (); }}}///<summary>//Execute SQL statement, return to first column///</summary> public vir Tual Object Getscalar (String sqltext, params dbparameter[] param) {return getscalar (SQLText, Commandtyp        E.text, param); }///<summary>///execute an SQL statement to return a DataSet object///</summary> public virtual DataSet Get            DataSet (String sqltext, CommandType cmdtype, params dbparameter[] param) {lock (_lockgetdataset) {try {setcommandandopenconnect (SQLText, Cmdtype, param);                    Dbdataadapterobj.selectcommand = Dbcommandobj;                    DataSet ds = new DataSet ();                    Dbdataadapterobj.fill (DS);                return DS;                    } catch (Exception ex) {Writeerrlog (ex, SQLText, Param);                throw new Dbdataexception ();                } finally {Closeconnect ();                }}}///<summary> execute an SQL statement to return a DataSet object///</summary> Public virtual DataSet GetDataSet (string sqltext, params dbparameter[] param) {return getdataset (sq        Ltext, CommandType.Text, param); }///<summary>///execute an SQL statement to return a DataTable object (call GetDataSet)///</summary> PU Blic Virtual DataTable getdatatable (string sqltext, params dbparameter[] param) {RETurn getdatatable (sqltext, CommandType.Text, param); }///<summary>///execute an SQL statement to return a DataTable object (call GetDataSet)///</summary> public vir Tual DataTable getdatatable (String sqltext, CommandType cmdtype, params dbparameter[] param) {return (G Etdataset (SQLText, Cmdtype, param)).        Tables[0]; }    }

  

The following is an implementation of SQL Server

 public class Sqlhelper:dbhelperbase {public SQLHelper (string connstr): Base (connstr) {}        SqlConnection _dbconnectionobj;        SqlCommand _dbcommandobj;        SqlDataAdapter _dbdataadapterobj;  protected override DbConnection Dbconnectionobj {get {//sqlbulkcopy AA = new                SqlBulkCopy (New SqlConnection ());                if (_dbconnectionobj = = null) {_dbconnectionobj = new SqlConnection (_CONNSTR);            } return _dbconnectionobj; }} protected override DbCommand Dbcommandobj {get {if (_dbcom                Mandobj = = null) {_dbcommandobj = new SqlCommand ();            } return _dbcommandobj;  }} protected override DbDataAdapter Dbdataadapterobj {get {if (_dbdatAadapterobj = = null) {_dbdataadapterobj = new SqlDataAdapter ();            } return _dbdataadapterobj; }        }    }

  

Examples of Use:

            Idbhelper sql = new SQLHelper ("Connection string");            Try            {                sql. Transstart (); The transaction begins with                SQL. Execnonquery ("Execute SQL statement 1"); Execute (Add and revise) an SQL statement                SQL. Execnonquery ("Execute SQL Statement 2"); Execute (Add and revise) an SQL statement                DataTable dt = sql. getdatatable ("Query SQL statement 1"); Get some data                SQL. Transcommit (); Commit TRANSACTION            }            catch (Exception ex)            {                sql. Transrollback (); Transaction rollback                throw;            }

  

The code that the C # operations database is about.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.