SQLLite的使用

 

interface
namespace SQLLiteHelper
{
    /// <summary>
    /// 数据库操作抽象
    /// </summary>
    public interface IDataAccess
    {
        /// <summary>
        /// 打开
        /// </summary>
        void Open();
        /// <summary>
        /// 关闭
        /// </summary>
        void Close();

        /// <summary>
        /// 执行 增 删 改 查
        /// </summary>
        /// <param name="sql">Sql语句</param>
        /// <param name="queryParameter">参数</param>
        int ExecuteNonQuery(string sql, QueryParameter[] queryParameter);

        /// <summary>
        /// 查询某一个值
        /// </summary>
        /// <param name="sql">Sql语句</param>
        /// <param name="parameters">参数</param>
        /// <returns>Object</returns>
        object GetScalar(string sql, QueryParameter[] parameters);

        /// <summary>
        /// 查询多条条数据
        /// </summary>
        /// <param name="sql">Sql语句</param>
        /// <param name="dt">DataTabel </param>
        /// <param name="parameters">参数</param>
        /// <returns>DataTable</returns>
        DataTable GetTable(string sql, DataTable dt, QueryParameter[] parameters);

        /// <summary>
        /// 查询多条值
        /// </summary>
        /// <param name="sql">Sql语句</param>
        /// <param name="parameters">参数</param>
        /// <returns>DataReader</returns>
        IDataReader GetReader(string sql, QueryParameter[] parameters);

        /// <summary>
        /// 开始事务
        /// </summary>
        void BeginTran();
        /// <summary>
        /// 提交事务
        /// </summary>
        void CommitTran();
        /// <summary>
        ///  回滚事务
        /// </summary>
        void RollBackTran();

    }
}
多数据库判断
 public  class DataAccessFactory
    {
      
        public static IDataAccess CreateDataAccess()
        {
            string conStr = System.Configuration.ConfigurationManager.AppSettings["conStr"];
            string conType = System.Configuration.ConfigurationManager.AppSettings["conType"]; 
            switch (conType)
            {
                case "SQLLite":return new SqlLiteDalHelper(conStr);
                    break;
                case "SQLServer":
                    return new SqlLiteDalHelper(conStr);
                    break;

                default:throw new Exception("该数据库不支持!");
            }
        }

    }
自定义类型参数
 1     public class QueryParameter
 2     {
 3 
 4         public string Name
 5         {
 6             get;
 7             set;
 8         }
 9         public object Value
10         {
11             get;
12             set;
13         }
14         public DbType DbType
15         {
16             get;
17             set;
18         }
19 
20         private ParameterDirection _driection = ParameterDirection.Input;
21 
22         public ParameterDirection Driection
23         {
24             get { return _driection; }
25             set { _driection = value; }
26         }
27         public QueryParameter(string name, object value, DbType dbType)
28         {
29             this.DbType = dbType;
30             this.Value = value;
31             this.Name = name;
32         }
33     }
SqlLiteDalHelper 操作类
  1  public class SqlLiteDalHelper : IDataAccess
  2     {
  3         private readonly SQLiteConnection _connection;
  4         private SQLiteTransaction _tran;
  5         public SqlLiteDalHelper(string constr)
  6         {
  7             _connection = new SQLiteConnection(constr);
  8         }
  9 
 10         public void Open()
 11         {
 12             if (this._connection == null || this._connection.State == ConnectionState.Closed)
 13             {
 14                 try
 15                 {
 16                     _connection.Open();
 17                 }
 18                 catch (ArgumentException)
 19                 {
 20                     throw;
 21                 }
 22               }
 23         }
 24 
 25         public void Close()
 26         {
 27             if (this._connection != null || _tran != null)
 28             {
 29                 _connection.Close();
 30             }
 31         }
 32 
 33         public int ExecuteNonQuery(string sql, QueryParameter[] queryParameter)
 34         {
 35             SQLiteCommand cmd = new SQLiteCommand();
 36             PrepareCommond(cmd, CommandType.Text, queryParameter, sql);
 37             int i = cmd.ExecuteNonQuery();
 38             cmd.Parameters.Clear();
 39             return i;
 40         }
 41 
 42         public object GetScalar(string sql, QueryParameter[] parameters)
 43         {
 44             SQLiteCommand cmd = new SQLiteCommand();
 45             PrepareCommond(cmd, CommandType.Text, parameters, sql);
 46             object obj = cmd.ExecuteScalar();
 47             cmd.Parameters.Clear();
 48             return obj;
 49         }
 50 
 51         public System.Data.DataTable GetTable(string sql, DataTable dt, QueryParameter[] parameters)
 52         {
 53             SQLiteCommand cmd = new SQLiteCommand();
 54             PrepareCommond(cmd, CommandType.Text, parameters, sql);
 55             SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
 56             sda.Fill(dt);
 57             cmd.Parameters.Clear();
 58             return dt;
 59         }
 60 
 61         public System.Data.IDataReader GetReader(string sql, QueryParameter[] parameters)
 62         {
 63             SQLiteCommand cmd = new SQLiteCommand();
 64             PrepareCommond(cmd, CommandType.Text, parameters, sql);
 65             SQLiteDataReader dr = cmd.ExecuteReader();
 66             cmd.Parameters.Clear();
 67             return dr;
 68         }
 69 
 70         public void BeginTran()
 71         {
 72             this._tran = this._connection.BeginTransaction();
 73         }
 74 
 75         public void CommitTran()
 76         {
 77             this._tran.Commit();
 78         }
 79 
 80         public void RollBackTran()
 81         {
 82             this._tran.Rollback();
 83         }
 84 
 85         private void PrepareCommond(SQLiteCommand cmd, CommandType commandType, QueryParameter[] parameters, string commandtext)
 86         {
 87             cmd.CommandType = commandType;
 88             cmd.CommandText = commandtext;
 89             cmd.Connection = _connection;
 90             cmd.Transaction = this._tran;
 91             if (parameters != null && parameters.Length > 0)
 92             {
 93                 for (int i = 0; i < parameters.Length; i++)
 94                 {
 95                     cmd.Parameters.AddWithValue(parameters[i].Name, parameters[i].Value);
 96                 }
 97             }
 98         }
 99 
100 
101     }

 

使用方法:

ClientCode
    public DataTable   FindAllTRoleOperator()
    {
        try
        {
            string sql;
            sql="SELECT COMMENTARY,OPERATORID,ROLEID from T_ROLE_OPERATOR";
            DataTable dt = new DataTable("MINORITY");
            data.GetTable(sql, dt, null);
            return dt;
        }
        catch(Exception e)
        {
            throw e;
        }
    }
View Code
public DataTable   FindAllTRoleOperator()
    {
        IDataAccess dataAccess  =null;
            try
            {
                dataAccess  =  DataAccessFactory.CreateDataAccess();
                dataAccess.Open();
                RoleOperatorService dal  =  new RoleOperatorService(dataAccess);
                return dal.FindAllTRoleOperator();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                if (dataAccess != null) dataAccess.Close();
            }
       }

运行结果:


 

posted @ 2012-11-20 15:58  在 水 一 方  阅读(6036)  评论(0编辑  收藏  举报