コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        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());
        }