zoukankan      html  css  js  c++  java
  • C# update join,delete join

    public static int UpdateJoin(DbFactory factory, string relationKey, string foreignKey, Dictionary<string, object> data, string condition, Joins mode, out string sql)
            {
                int count = data.Count;
                if (count == 0)
                {
                    throw new ArgumentException("data");
                }
                string table = relationKey.Substring(0, relationKey.IndexOf(SqlBuilder.JoinSymbol)), foreignTable = foreignKey.Substring(0, foreignKey.IndexOf(SqlBuilder.JoinSymbol));
                count *= 8 + Math.Max(table.Length, foreignTable.Length);
                StringBuilder sb = new StringBuilder(count);
                using (Dictionary<string, object>.Enumerator e = data.GetEnumerator())
                {
                    e.MoveNext();
                    sb.Append(e.Current.Key).Append("=").AppendValue(e.Current.Value);
                    while (e.MoveNext())
                    {
                        sb.Append(SqlBuilder.Separator).Append(e.Current.Key).Append("=").AppendValue(e.Current.Value);
                    }
                }
                switch (factory.ProviderName)
                {
                    case DbProvider.Sql:
                        sql = String.Concat("UPDATE [", table, "] SET ", sb.ToString(), " FROM [", table, "] ", mode.ToString(), " JOIN [", foreignTable, "] ON ", relationKey, "=", foreignKey, SqlBuilder.Space, condition);
                        break;
                    case DbProvider.OleDb:
                        sql = String.Concat("UPDATE [", table, "] ", mode.ToString(), " JOIN [", foreignTable, "] ON ", relationKey, "=", foreignKey, " SET ", sb.ToString(), SqlBuilder.Space, condition);
                        break;
                    default:
                        throw new NotSupportedException();
                }
                return DbBase.ExecuteNonQuery(factory, sql);
            }
    
            public static int DeleteJoin(DbFactory factory, string relationKey, string foreignKey, string condition, Joins mode, out string sql)
            {
                string table = relationKey.Substring(0, relationKey.IndexOf(SqlBuilder.JoinSymbol)), foreignTable = foreignKey.Substring(0, foreignKey.IndexOf(SqlBuilder.JoinSymbol));
                switch (factory.ProviderName)
                {
                    case DbProvider.Sql:
                        sql = String.Concat("DELETE FROM [", table, "] FROM [", table, "] ", mode.ToString(), " JOIN [", foreignTable, "] ON ", relationKey, "=", foreignKey, SqlBuilder.Space, condition);
                        break;
                    case DbProvider.OleDb:
                        sql = String.Concat("DELETE ", table, ".*,", foreignTable, ".* FROM [", table, "] ", mode.ToString(), " JOIN [", foreignTable, "] ON ", relationKey, "=", foreignKey, SqlBuilder.Space, condition);
                        break;
                    default:
                        throw new NotSupportedException();
                }
                return DbBase.ExecuteNonQuery(factory, sql);
            }
    
  • 相关阅读:
    第三十五篇 os模块、sys模块、json模块、pickle模块
    第三十三篇 包
    <词云图>疾风剑豪-亚索词云图
    <爬虫>常见网址的爬虫整理
    <爬虫>反反爬虫的各种知识
    <爬虫>崔庆才的爬虫课
    <随便写>番茄工作法笔记
    <就业指导>为了找到更好的工作
    <人事面试>人事面试整理
    <面试题>面试题整理(101-200)
  • 原文地址:https://www.cnblogs.com/Googler/p/1759172.html
Copyright © 2011-2022 走看看