Sqlite DBconnection DAL类

Sqlite DBconnection DAL类,第1张

概述public class SqliteDataModel { private SQLiteCommand sqliteCommand; private SQLiteDataAdapter sqliteAdpater; private SQLiteTransaction sqliteTransaction; private S
public class sqliteDataModel    {        private sqliteCommand sqliteCommand;        private sqliteDataAdapter sqliteAdpater;        private sqliteTransaction sqliteTransaction;        private sqliteConnection strConn = null;        public  sqliteConnection StrConn        {            get            {                if (strConn == null)                {                    string strConnstring = AppDomain.CurrentDomain.BaseDirectory+"test.DB3";                    if (!file.Exists(strConnstring))                    {                        sqliteConnection.Createfile(strConnstring);                        sqliteConnectionStringBuilder connStr = new sqliteConnectionStringBuilder();                        connStr.DataSource = strConnstring;                        strConn = new sqliteConnection(connStr.ToString());                        if (strConn.State == ConnectionState.Closed)                        {                            //修改这个参数的默认值的原因是删除数据之后会自动清理数据文件                            strConn.open();                            sqliteCommand cmd = new sqliteCommand();                            cmd.CommandText = " PRAGMA auto_vacuum = 1";                            cmd.Connection = strConn;                            cmd.ExecuteNonquery();                            strConn.Close();                        }                    }                    else                    {                        sqliteConnectionStringBuilder connStr = new sqliteConnectionStringBuilder();                        connStr.DataSource = strConnstring;                        strConn = new sqliteConnection(connStr.ToString());                    }                }                return strConn;            }        }        public sqliteDataModel()        {            this.Init();        }        private voID Init()        {            if (this.sqliteCommand != null)            {                this.sqliteCommand.dispose();                this.sqliteCommand = null;            }            if (this.sqliteAdpater != null)            {                this.sqliteAdpater.dispose();                this.sqliteAdpater = null;            }            if (this.sqliteTransaction != null)            {                this.sqliteTransaction.dispose();                this.sqliteTransaction = null;            }            if (this.strConn != null)            {                this.strConn.dispose();            }            this.sqliteCommand = new sqliteCommand();            this.sqliteAdpater = new sqliteDataAdapter();            this.sqliteCommand.Connection = this.StrConn;            this.sqliteAdpater.SelectCommand = this.sqliteCommand;        }        public int ExeNonquery(string strsql)        {            int nReturn = 0;            this.sqliteCommand.CommandText = strsql;            try            {                if (this.StrConn.State == ConnectionState.Closed)                {                    this.StrConn.open();                    nReturn = sqliteCommand.ExecuteNonquery();                    this.StrConn.Close();                }                else                {                    nReturn = sqliteCommand.ExecuteNonquery();                }            }            catch (sqliteException ex)            {                Pub.WriteLog(ex.StackTrace);                this.StrConn.Close();                return nReturn;            }            return nReturn;        }        public Datatable Exequery(string strsql)        {            this.sqliteCommand.CommandText = strsql;            Datatable dtResult = new Datatable();            try            {                if (this.StrConn.State == ConnectionState.Closed)                {                    this.StrConn.open();                    this.sqliteAdpater.Fill(dtResult);                    this.StrConn.Close();                }                else                {                    this.sqliteAdpater.Fill(dtResult);                }            }            catch (sqliteException ex)            {                Pub.WriteLog(ex.StackTrace);                return null;            }            return dtResult;        }        /// <summary>        /// 存储二进制文件        /// </summary>        /// <param name="buf">文件缓存</param>        /// <param name="sql"></param>        /// <param name="para">占位符</param>        /// <returns></returns>        public bool ExeNonquery(byte[] buf,string sql,string para)        {            lock (this)            {                this.sqliteCommand.CommandText = sql;                try                {                    if (this.StrConn.State == ConnectionState.Closed)                    {                        this.StrConn.open();                        this.sqliteTransaction = this.StrConn.BeginTransaction();                        this.sqliteCommand.Transaction = this.sqliteTransaction;                        sqliteCommand.Parameters.Add(para,DbType.Binary).Value = buf;                        sqliteCommand.ExecuteNonquery();                        this.sqliteTransaction.Commit();                        this.StrConn.Close();                    }                    else                    {                        this.sqliteTransaction = this.StrConn.BeginTransaction();                        this.sqliteCommand.Transaction = this.sqliteTransaction;                        sqliteCommand.Parameters.Add(para,DbType.Binary).Value = buf;                        sqliteCommand.ExecuteNonquery();                        this.sqliteTransaction.Commit();                    }                }                catch (Exception ex)                {                    Pub.WriteLog(ex.StackTrace);                    this.sqliteTransaction.Rollback();                    this.StrConn.Close();                    return false;                }            }            return true;        }        public sqliteDataReader ExequeryDataReader(string strsql)        {            this.sqliteCommand.CommandText = strsql;            sqliteDataReader dr;            lock (this)            {                try                {                    if (this.StrConn.State == ConnectionState.Closed)                    {                        this.StrConn.open();                        dr = this.sqliteCommand.ExecuteReader();                        this.StrConn.Close();                    }                    else                    {                        dr = this.sqliteCommand.ExecuteReader();                    }                }                catch (System.Data.sqlite.sqliteException Ex)                {                    this.StrConn.Close();                    Pub.WriteLog(Ex.StackTrace);                    return null;                }                }            return dr;        }        public voID BeginTransaction()        {            lock (this)            {                if (this.StrConn.State != ConnectionState.Open)                {                    this.StrConn.open();                }                this.sqliteTransaction = this.StrConn.BeginTransaction();            }        }        public voID CommitTransaction()        {            lock (this)            {                this.sqliteTransaction.Commit();                this.sqliteTransaction.dispose();                this.sqliteTransaction = null;                if (this.StrConn.State != ConnectionState.Closed)                {                    this.StrConn.Close();                }            }        }        public voID RollBackTransaction()        {            lock (this)            {                try                {                    this.sqliteTransaction.Rollback();                }                catch (Exception ex)                {                    Pub.WriteLog(ex.StackTrace);                }                this.sqliteTransaction.dispose();                this.sqliteTransaction = null;                if (this.StrConn.State != ConnectionState.Closed)                {                    this.StrConn.Close();                }            }        }    }
总结

以上是内存溢出为你收集整理的Sqlite DBconnection DAL类全部内容,希望文章能够帮你解决Sqlite DBconnection DAL类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1176381.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-02
下一篇2022-06-02

发表评论

登录后才能评论

评论列表(0条)

    保存