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();

            }

       }

运行结果:

SQLLite的使用


 

你可能感兴趣的:(sql)