
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类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)