加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite访问封装类

发布时间:2020-12-12 23:30:35 所属栏目:百科 来源:网络整理
导读:http://www.cnblogs.com/jackdong/archive/2010/10/08/1845787.html SQLite作为windows mobile的数据库,是一种不错的选择。SQLite的下载地址为: SQLite ,SQLite的ADO.net Provider下载地址为: System.Data.SQLite ,在发布程序时,请别忘记拷贝SQLite.In
usingSystem.Data; usingSystem.Data.SQLite; usingSystem.IO; namespaceMyHelper.DataAccess { publicclassSQLiteHelper { privatestaticstringpassword = "***"; //请修改***为实际密码 privatestaticstringdbFilePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly() .GetName().CodeBase) + "//***.db"; //请修改***为实际SQLite数据库名 privatestaticstringconnectString = string.Format("Data Source =/"{}/"",dbFilePath,password); privatestaticSQLiteConnection myConnect = newSQLiteConnection(connectString); /**//// <summary> /// 取当前SQLite连接 /// </summary> /// <returns>当前SQLite连接</returns> publicstaticSQLiteConnection GetConnection() { returnmyConnect; } /**//// <summary> /// 执行SQL语句,返回受影响的行数 /// </summary> /// <param name="commandString">SQL语句</param> /// <param name="parameters">SQL语句参数</param> /// <returns>受影响的行数</returns> publicstaticintExecuteNonQuery(stringcommandString,paramsSQLiteParameter[] parameters) { intresult = ; using(SQLiteCommand command = newSQLiteCommand()) { PrepareCommand(command,null,commandString,parameters); result = command.ExecuteNonQuery(); command.Parameters.Clear(); } returnresult; } /**//// <summary> /// 执行带事务的SQL语句,返回受影响的行数 /// </summary> /// <param name="transaction">SQL事务</param> /// <param name="commandString">SQL语句</param> /// <param name="parameters">SQL语句参数</param> /// <returns>受影响的行数</returns> publicstaticintExecuteNonQuery(SQLiteTransaction transaction,stringcommandString,paramsSQLiteParameter[] parameters) { intresult = ; using(SQLiteCommand command = newSQLiteCommand()) { PrepareCommand(command,transaction,parameters); result = command.ExecuteNonQuery(); command.Parameters.Clear(); } returnresult; } /**//// <summary> /// 执行查询,并返回结果集的第一行第一列的值,忽略其它所有的行和列 /// </summary> /// <param name="commandString">SQL语句</param> /// <param name="parameters">SQL语句参数</param> /// <returns>第一行第一列的值</returns> publicstaticobjectExecuteScalar(stringcommandString,paramsSQLiteParameter[] parameters) { objectresult; using(SQLiteCommand command = newSQLiteCommand()) { PrepareCommand(command,parameters); result = command.ExecuteScalar(); } returnresult; } /**//// <summary> /// 执行SQL语句,返回结果集的DataReader /// </summary> /// <param name="commandString">SQL语句</param> /// <param name="parameters">SQL语句参数</param> /// <returns>结果集的DataReader</returns> publicstaticSQLiteDataReader ExecuteReader(stringcommandString,paramsSQLiteParameter[] parameters) { SQLiteCommand command = newSQLiteCommand(); try{ PrepareCommand(command,parameters); SQLiteDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection); command.Parameters.Clear(); returnreader; } catch{ throw; } } /**//// <summary> /// 预处理Command对象,数据库链接,事务,需要执行的对象,参数等的初始化 /// </summary> /// <param name="command">Command对象</param> /// <param name="transaction">transaction对象</param> /// <param name="commandString">SQL语句</param> /// <param name="parameters">SQL语句参数</param> privatestaticvoidPrepareCommand(SQLiteCommand command,SQLiteTransaction transaction,stringcommandString,paramsSQLiteParameter[] parameters) { if(myConnect.State != ConnectionState.Open) myConnect.Open(); command.Connection = myConnect; command.CommandText = commandString; if(transaction != null) command.Transaction = transaction; if(parameters != null&& parameters.Length > ) { command.Parameters.AddRange(parameters); } } } }

为了提高效率,我将数据库连接修改为长连接。这样,只有第一次连接时会比较耗时,以后的操作就比较快了。如果本文有错误的地方,请大家参考egmkang原文。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

http://www.cnblogs.com/jackdong/archive/2010/10/08/1845787.html

SQLite作为windows mobile的数据库,是一种不错的选择。SQLite的下载地址为:SQLite,SQLite的ADO.net Provider下载地址为:System.Data.SQLite ,在发布程序时,请别忘记拷贝SQLite.Interop.06.DLL、system.data.sqlite.dll两个文件到安装目录下。
本文非原创,而是参考egmkang撰写的WM下访问SQLite(一种替代SQL CE的解决方案),并根据我自己的编程需要和习惯做了少许修改,错误在所难免。下面实现的是一个SQLiteHelper封装类:

    推荐文章
      热点阅读