以前也了解过SQLite但是没有具体去在程序中实现 现在找到了SqlHelper代码  准备以后用用呵呵。

—-

即使是做网络应用,在断线情况下,也需要考虑数据的本地存储。在SQLite出现之前,数据量大的情况下,我们一直使用ACCESS,数据量小,则文件存储。ACCESS不支持事务原子性,在断电情况下(这种情况总是会发生)会导致数据很难恢复。

一:安装

SQLITE,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统。我直接使用的是http://sqlite.phxsoftware.com/(An open source ADO.NET provider for the SQLite database engine)。下载完毕是一个EXE,安装后根目录如下:

clip_image002

Bin下有一个测试工具,可以查看本地运行SQLITE的各项性能指标。

二:新建数据库

安装完毕后,打开visual studio,新建数据连接,可以看到数据源多了一项SQLite。

clip_image004

新建连接,如下图。SQLITE的数据库,保存后是一个文件。

clip_image006

三:数据库维护

可以在VS中方面的维护SQLITE数据,如下图:

clip_image008

可以在VS中使用类似SQL查询分析器的功能,如下图:

clip_image010

四:混合模式

安装完毕,可以直接在项目集的引用中,多了

System.Data.SQLite

System.Data.SQLite.Linq

两个程序集,由于http://sqlite.phxsoftware.com/的System.Data.SQLite是混合模式程序集,是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。故需要在App.config中配置如下参数。

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <startup useLegacyV2RuntimeActivationPolicy="true">

    <supportedRuntime version="v4.0"/>

  </startup>

</configuration>

五:SQLiteHelper

最后,提供一个自己写的SQLiteHelper:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data.SQLite;

using System.Data;

using System.Data.Common;

namespace Com.Luminji.DataService.SQLHelpers

{

    public class SQLiteHelper

    {

        /// <summary>

        /// ConnectionString样例:Datasource=Test.db3;Pooling=true;FailIfMissing=false

        /// </summary>

        public static string ConnectionString { get; set; }

        private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p)

        {

            if (conn.State != ConnectionState.Open)

                conn.Open();

            cmd.Parameters.Clear();

            cmd.Connection = conn;

            cmd.CommandText = cmdText;

            cmd.CommandType = CommandType.Text;

            cmd.CommandTimeout = 30;

            if (p != null)

            {

                foreach (object parm in p)

                    cmd.Parameters.AddWithValue(string.Empty, parm);

            }

        }

        public static DataSet ExecuteQuery(string cmdText, params object[] p)

        {

            using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))

            {

                using (SQLiteCommand command = new SQLiteCommand())

                {

                    DataSet ds = new DataSet();

                    PrepareCommand(command, conn, cmdText, p);

                    SQLiteDataAdapter da = new SQLiteDataAdapter(command);

                    da.Fill(ds);

                    return ds;

                }

            }

        }

        public static int ExecuteNonQuery(string cmdText, params object[] p)

        {

            using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))

            {

                using (SQLiteCommand command = new SQLiteCommand())

                {

                    PrepareCommand(command, conn, cmdText, p);

                    return command.ExecuteNonQuery();

                }

            }

        }

        public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p)

        {

            using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))

            {

                using (SQLiteCommand command = new SQLiteCommand())

                {

                    PrepareCommand(command, conn, cmdText, p);

                    return command.ExecuteReader(CommandBehavior.CloseConnection);

                }

            }

        }

        public static object ExecuteScalar(string cmdText, params object[] p)

        {

            using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))

            {

                using (SQLiteCommand command = new SQLiteCommand())

                {

                    PrepareCommand(command, conn, cmdText, p);

                    return command.ExecuteScalar();

                }

            }

        }

    }

}
六:附注
SQLite官方网站: http://www.sqlite. org/ 时第一眼看到关于SQLite的特性。
  1. ACID事务
  2. 零配置 – 无需安装和管理配置
  3. 储存在单一磁盘文件中的一个完整的数据库
  4. 数据库文件可以在不同字节顺序的机器间自由的共享
  5. 支持数据库大小至2TB
  6. 足够小, 大致3万行C代码, 250K
  7. 比一些流行的数据库在大部分普通数据库操作要快
  8. 简单, 轻松的API
  9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定
  10. 良好注释的源代码, 并且有着90%以上的测试覆盖率
  11. 独立: 没有额外依赖
  12. Source完全的Open, 你可以用于任何用途, 包括出售它
  13. 支持多种开发语言,C, PHP, Perl, Java, ASP .NET,Python
文章转载:luminji