using System; using System.Data; using System.Data.SQLite; using System.Linq; using Easy4net.DBUtility; namespace Easy4net.Variety.SQLite { /// /// SQLite数据库配置类 /// public class OrmSQLiteConfig : OrmConfig { /// /// SQLite关键字集合 /// private readonly static string[] _keySQLite = { "order", "desc", "key" }; /// /// 获取当前支持的数据库类型 /// public override DatabaseType DbType { get { return DatabaseType.SQLITE; } } /// /// 获取对应的数据库参数字符前缀 /// public override string DbParamChar { get { return "@"; } } /// /// 创建一个数据库参数对象 /// /// public OrmSQLiteConfig(string aConn) { this.ConnectionString = aConn; } /// /// 根据SQLite数据库参数获取一个MSSQL的数据库参数对象 /// /// public OrmSQLiteConfig(SQLiteConnectionParam aPrm) { this.ConnectionString = SQLiteConnectionParam.GetConnectionString(aPrm); } /// /// 根据当前的全局配置获取一个SQLite的数据库参数对象 /// public OrmSQLiteConfig() { this.ConnectionString = SQLiteConnectionParam.ConnectionString; } /// /// 创建一个数据库链接对象 /// /// internal override IDbConnection CreateDbConnection() { return new SQLiteConnection(ConnectionString); } /// /// 创建一个数据库命令对象 /// /// internal override IDbCommand CreateDbCommand() { return new SQLiteCommand(); } /// /// 创建数据库适配器对象 /// /// internal override IDbDataAdapter CreateDataAdapter() { return new SQLiteDataAdapter(); } /// /// 根据传入的命令对象创建适配器对象 /// /// /// internal override IDbDataAdapter CreateDataAdapter(IDbCommand aCmd) { return new SQLiteDataAdapter((SQLiteCommand)aCmd); } /// /// 创建数据库参数对象 /// /// public override IDbDataParameter CreateDbParameter() { return new SQLiteParameter(); } /// /// 根据参数名与值创建数据库参数对象 /// /// /// /// public override IDbDataParameter CreateDbParameter(string aPrmName, object aValue) { IDbDataParameter param = CreateDbParameter(); param.ParameterName = "@" + aPrmName; param.Value = aValue; return param; } /// /// 检查SQLite列名是否为数据库的关键字,是则进行格式化,否则返回原列名 /// /// /// internal override string FormatColumnName(string aColounName) { string tmp_str = aColounName.ToLower(); if (_keySQLite.Contains(tmp_str)) { return string.Format("`{0}`", tmp_str); } return aColounName; } /// /// 生成获取自增长列的新添加值的SQL语句 /// /// internal override string GetAutoSql() { return " ;select last_insert_rowid() as AutoId "; } } }