技术开发 频道

C#数据本地存储方案之SQLite

  五: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

0
相关文章