From 4ce9c9c0cf9aedc0e0945b8a722ac316e2b3fda9 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 8 Jul 2017 20:41:44 +0800 Subject: [PATCH] Update Sqlite --- .../DbMaintenance/SqliteDbMaintenance.cs | 85 ++++++++++++------ .../Sqlite/SqlBuilder/SqliteInsertBuilder.cs | 2 +- .../SqliteTest/DataBase/SqlSugar4xTest.sqlite | Bin 0 -> 73728 bytes Src/Asp.Net/SqliteTest/SqliteTest.csproj | 40 +++++---- 4 files changed, 83 insertions(+), 44 deletions(-) create mode 100644 Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs index ecb6ba18f..8b8ebc84a 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Data; using System.Linq; using System.Text; @@ -12,39 +13,21 @@ namespace SqlSugar { get { - string sql = @"SELECT - 0 as TableId, - TABLE_NAME as TableName, - column_name AS DbColumnName, - CASE WHEN left(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)-1)='' THEN COLUMN_TYPE ELSE left(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)-1) END AS DataType, - CAST(SUBSTRING(COLUMN_TYPE,LOCATE('(',COLUMN_TYPE)+1,LOCATE(')',COLUMN_TYPE)-LOCATE('(',COLUMN_TYPE)-1) AS signed) AS Length, - column_default AS `DefaultValue`, - column_comment AS `ColumnDescription`, - CASE WHEN COLUMN_KEY = 'PRI' - THEN true ELSE false END AS `IsPrimaryKey`, - CASE WHEN EXTRA='auto_increment' THEN true ELSE false END as IsIdentity, - CASE WHEN is_nullable = 'YES' - THEN true ELSE false END AS `IsNullable` - FROM - Information_schema.columns where TABLE_NAME='{0}' and TABLE_SCHEMA=(select database()) ORDER BY TABLE_NAME"; - return sql; + throw new NotSupportedException(); } } protected override string GetTableInfoListSql { get { - return @"select TABLE_NAME as Name,TABLE_COMMENT as Description from information_schema.tables - where TABLE_SCHEMA=(select database()) AND TABLE_TYPE='BASE TABLE'"; + return @"select Name from sqlite_master where type='table' order by name;"; } } protected override string GetViewInfoListSql { get { - return @"select TABLE_NAME as Name,TABLE_COMMENT as Description from information_schema.tables - where TABLE_SCHEMA=(select database()) AND TABLE_TYPE='VIEW' - "; + return @"select Name from sqlite_master where type='view' order by name;"; } } #endregion @@ -179,13 +162,47 @@ namespace SqlSugar #endregion #region Methods + public override List GetColumnInfosByTableName(string tableName) + { + string cacheKey = "DbMaintenanceProvider.GetColumnInfosByTableName." + this.SqlBuilder.GetNoTranslationColumnName(tableName).ToLower(); + return this.Context.RewritableMethods.GetCacheInstance>().Func(cacheKey, + (cm, key) => + { + return cm[cacheKey]; + + }, (cm, key) => + { + List result = new List(); + using (var dr = this.Context.Ado.GetDataReader("select * from " + tableName + " limit 0,1")) + { + var schemaTable = dr.GetSchemaTable(); + foreach (DataRow row in schemaTable.Rows) + { + DbColumnInfo column = new DbColumnInfo() + { + TableName = tableName, + DataType = dr["DataTypeName"].ToString().Trim(), + IsNullable = (bool)dr["AllowDBNull"], + IsIdentity = (bool)dr["IsAutoIncrement"], + ColumnDescription = null, + DbColumnName = dr["ColumnName"].ToString(), + DefaultValue = dr["defultValue"].ToString(), + IsPrimarykey = (bool)dr["IsKey"], + Length = Convert.ToInt32(dr["ColumnSize"]) + }; + result.Add(column); + } + } + return result; + }); + } public override bool CreateTable(string tableName, List columns) { if (columns.IsValuable()) { foreach (var item in columns) { - if (item.DbColumnName.Equals("GUID",StringComparison.CurrentCultureIgnoreCase)) + if (item.DbColumnName.Equals("GUID", StringComparison.CurrentCultureIgnoreCase)) { item.Length = 10; } @@ -193,8 +210,9 @@ namespace SqlSugar } string sql = GetCreateTableSql(tableName, columns); string primaryKeyInfo = null; - if (columns.Any(it => it.IsIdentity)) { - primaryKeyInfo =string.Format( ", Primary key({0})",string.Join(",",columns.Where(it=>it.IsIdentity).Select(it=>this.SqlBuilder.GetTranslationColumnName(it.DbColumnName)))); + if (columns.Any(it => it.IsIdentity)) + { + primaryKeyInfo = string.Format(", Primary key({0})", string.Join(",", columns.Where(it => it.IsIdentity).Select(it => this.SqlBuilder.GetTranslationColumnName(it.DbColumnName)))); } sql = sql.Replace("$PrimaryKey", primaryKeyInfo); @@ -209,7 +227,8 @@ namespace SqlSugar { string columnName = item.DbColumnName; string dataType = item.DataType; - if (dataType == "varchar"&& item.Length==0) { + if (dataType == "varchar" && item.Length == 0) + { item.Length = 1; } string dataSize = item.Length > 0 ? string.Format("({0})", item.Length) : null; @@ -231,6 +250,22 @@ namespace SqlSugar Check.ThrowNotSupportedException("MySql BackupDataBase NotSupported"); return false; } + private List GetListOrCache(string cacheKey, string sql) + { + return this.Context.RewritableMethods.GetCacheInstance>().Func(cacheKey, + (cm, key) => + { + return cm[cacheKey]; + + }, (cm, key) => + { + var isEnableLogEvent = this.Context.Ado.IsEnableLogEvent; + this.Context.Ado.IsEnableLogEvent = false; + var reval = this.Context.Ado.SqlQuery(sql); + this.Context.Ado.IsEnableLogEvent = isEnableLogEvent; + return reval; + }); + } #endregion } } diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs index 6cffeb242..18dc94c17 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs @@ -11,7 +11,7 @@ return @"INSERT INTO {0} ({1}) VALUES - ({2}) ;SELECT LAST_INSERT_ID();"; + ({2}) ;SELECT LAST_INSERT_ROWID();"; } else { diff --git a/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..3906a316646f8509aecc6c30dfb8fff09c99cf6e GIT binary patch literal 73728 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

%PWp4Sq*>&<=>U}4-{>4NBbuu5 zW`1K@+J3Mbp1-QqozH^4a@gzi9SnA3i$s;DfN= zkw5>rM^2vj7VH<^ji3F|QO2rv$yx$km}0K^{Qr#QoVi$kcf)?801BW03ZMWApa2S> z01BW03ZMWATv(uJcQ{t_^Z%0bgyp>9{MC7>`T7477mmS4Pyhu`00mG01yBG5Pyhu` z00mG01wK-N8eHq&TRruIhhKl;{%*M1e~mr!+vjG!@xsi5Pj+;|HUGW#>EGRV`ibL( zPPpp7*Pglim$N^9wxbT${jau%MrTjlJ#+8T!eY4ce?xWVo?|mVfBf{r-#>lgXXf+& z7cJ+-kF@vr;wXRuD1ZVefC4Ch0w{n2D1ZVefCB%!Kxmi7mMp8R_PLwD#b$5?S{%Xk zFrf_Lsv)h3=f`kKhX)q~hI9&UE?ng36Gm7K+P0lnEcn733ZMWApa2S>01BW03ZMWA zpa2S>z(ppov16?ILH=Vv_W6I&c{%&{|NahF0K9yWrHS1|0Te(16hHwKKmim$0Te(1 z6hMJXR-jt!uzF{YJvRH$@oEQb&fI(K^w)n=2g^8m83ZMWApa2S>01BW03ZMWApuhqVxXi9tj$=8idzkCNpZ@dgPyZWJ4c7ek z|E$FeBuz{M1yBG5Pyhu`00mG01yBG5Pyhu`;JgCn`u}$<=biIDj0aHw1yBG5Pyhu` z00mG01yBG5PyhukZh>NlQ_cVVzcZF|=HgBUdyfJrfC4Ch0w{n2D1ZVefC4Ch0w{1k zfkj2fsy6@rzu>$D@BiTrZzzBQD1ZVefC4Ch0w{n2D1ZVefC39fpjhZ|EVpRGee?7G zg7aqf{{PJdlOQI70w{n2D1ZVefC4Ch0w{n2D1ZVeP=XKsZMV?+`TyIN^Ka*Eq(K1` zKmim$0Te(16hHwKKmim$0TftR0);}sD%b@p`~UwH;H^Kt|6f?+i`k$63ZMWApa2S> z01BW03ZMWApg< + Debug AnyCPU - d48622b3-f4cd-45cd-b1c9-868083037ecd + {D48622B3-F4CD-45CD-B1C9-868083037ECD} Library Properties SqliteTest @@ -30,25 +30,30 @@ 4 - - - - - - - - - - - - - - + + + + + + + + + + + + + + Always + + + Always + + - - + \ No newline at end of file