internal virtual void ExecuteDelSqlList(string tableName, object[] ids) { string tableName1 = tableName; if (TableToTableNameDic != null && TableToTableNameDic.ContainsKey(tableName)) { tableName1 = TableToTableNameDic[tableName]; } if (!DataBaseKyFieldTableDic.ContainsKey(tableName1)) { throw new Exception("缺少表或视图:" + tableName1 + "!请联系开发人员!"); } ; StringBuilder builder = new StringBuilder(); foreach (var item in ids) { var sqlInfo = new SqlTableInfo(); sqlInfo.TableName = tableName1; var keyFieldName = DataBaseKyFieldTableDic[tableName1]; sqlInfo.KeyFieldName = keyFieldName; sqlInfo.Fields = new Dictionary <string, object>(); sqlInfo.Fields.Add(keyFieldName, item); var sql = GetSqlFromDelTableInfo(sqlInfo); builder.AppendLine(sql); } if (builder.Length > 0) { ExecuteSqlList(builder); } }
internal virtual string GetSqlFromTableInfo(SqlTableInfo sql) { SqlFieldList fieldList = new SqlFieldList(sql.TableName); fieldList.PrividerType = CurrPrividerType; foreach (var item in sql.Fields) { if (item.Key == "OBJECTID") { continue;// “OBJECTID”是自增树列,会出现 SQL 语句无法更新标识列 2019/07/29 } bool IsPkField = false; if (!string.IsNullOrEmpty(sql.KeyFieldName)) { IsPkField = item.Key.ToLower() == sql.KeyFieldName.ToLower(); } if (IsPkField) { fieldList.PrimaryField = new SqlField(item.Key, item.Value, CurrPrividerType); } if (CurrPrividerType == SqlPrividerType.Sqlite) { if (item.Value is DateTime) { string str = ((DateTime)item.Value).ToString("s"); fieldList.AddNonPrimaryField(item.Key, str); } else { fieldList.AddNonPrimaryField(item.Key, item.Value); } } else { if (!DicTableToTableNameFields[sql.TableName].ContainsKey(item.Key)) { continue; } var typeName = DicTableToTableNameFields[sql.TableName][item.Key]; if (typeName == "datetime" && item.Value != null && !string.IsNullOrEmpty(item.Value.ToString())) { var date = DateTime.Parse(item.Value.ToString()); fieldList.AddNonPrimaryField(item.Key, date); } else { fieldList.AddNonPrimaryField(item.Key, item.Value); } } continue; } return(SqlFieldList.GetSqlString(fieldList)); }
internal virtual string GetSqlFromDelTableInfo(SqlTableInfo sql) { SqlFieldList fieldList = new SqlFieldList(sql.TableName); foreach (var item in sql.Fields) { bool IsPkField = false; if (!string.IsNullOrEmpty(sql.KeyFieldName)) { IsPkField = item.Key == sql.KeyFieldName; } if (IsPkField) { fieldList.PrimaryField = new SqlField(item.Key, item.Value, CurrPrividerType); } fieldList.AddNonPrimaryField(item.Key, item.Value); continue; } return(fieldList.GetDeleteString()); }
internal virtual SqlTableInfo[] GetSqlList(string tableName, Dictionary <string, object>[] models, Dictionary <string, string> DataBaseKyFieldTableDic, bool ispart = false) { var list = new List <SqlTableInfo>(); foreach (var item in models) { var sql = new SqlTableInfo(); sql.TableName = tableName; if (DataBaseKyFieldTableDic.ContainsKey(tableName)) { sql.KeyFieldName = DataBaseKyFieldTableDic[tableName]; } var diclist = item.Where(m => DicTableToTableNameFields[tableName].ContainsKey(m.Key)).ToDictionary(m => m.Key, n => n.Value); if (ispart == false) { //var noExists = DicTableToTableNameFields[tableName].Where(m => diclist.ContainsKey(m.Key) == false).Select(m => m.Key).ToArray(); //foreach (var field in noExists) // diclist.Add(field, null); } sql.Fields = diclist; list.Add(sql); } return(list.ToArray()); }