Example #1
0
 /// <summary>
 /// 初始化一个<see cref="FromClause"/>类型的实例
 /// </summary>
 /// <param name="builder">Sql生成器</param>
 /// <param name="dialect">Sql方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 /// <param name="tableDatabase">表数据库</param>
 /// <param name="table">表</param>
 public SqliteFromClause(ISqlBuilder builder
                         , IDialect dialect
                         , IEntityResolver resolver
                         , IEntityAliasRegister register
                         , ITableDatabase tableDatabase
                         , SqlItem table = null)
     : base(builder, dialect, resolver, register, tableDatabase, table)
 {
 }
Example #2
0
 /// <summary>
 /// 添加到From子句
 /// </summary>
 /// <param name="sql">Sql语句</param>
 public void AppendSql(string sql)
 {
     if (Table != null && Table.Raw)
     {
         Table.Name += sql;
         return;
     }
     Table = new SqlItem(sql, raw: true);
 }
Example #3
0
        /// <summary>
        /// 设置表名
        /// </summary>
        /// <typeparam name="TEntity">实体类型</typeparam>
        /// <param name="alias">别名</param>
        /// <param name="schema">架构名</param>
        public void From <TEntity>(string alias = null, string schema = null) where TEntity : class
        {
            var type  = typeof(TEntity);
            var table = Resolver.GetTableAndSchema(type);

            Table = CreateSqlItem(table, schema, alias);
            Register.Register(type, Resolver.GetAlias(type, alias));
            Register.FromType = type;
        }
Example #4
0
 /// <summary>
 /// 添加到From子句
 /// </summary>
 /// <param name="sql">Sql语句</param>
 public void AppendSql(string sql)
 {
     if (_item != null && _item.Raw)
     {
         _item.Name += sql;
         return;
     }
     _item = new SqlItem(sql, raw: true);
 }
Example #5
0
 /// <summary>
 /// 初始化From子句
 /// </summary>
 /// <param name="builder">Sql生成器</param>
 /// <param name="dialect">方言</param>
 /// <param name="resolver">实体解析器</param>
 /// <param name="register">实体别名注册器</param>
 /// <param name="tableDatabase">表数据库</param>
 /// <param name="table">表</param>
 public FromClause(ISqlBuilder builder, IDialect dialect, IEntityResolver resolver, IEntityAliasRegister register, ITableDatabase tableDatabase, SqlItem table = null)
 {
     Builder       = builder;
     Dialect       = dialect;
     Resolver      = resolver;
     Register      = register;
     TableDatabase = tableDatabase;
     Table         = table;
 }
Example #6
0
 public SqlItem CreateItem([FromBody] SqlItem sqlItem)
 {
     RequireNonNull(sqlItem);
     RequireFieldNonBlank(sqlItem.Content, nameof(sqlItem.Content));
     // TODO
     // 暂时没开始做用户登录之类的管理功能
     // 所以创建人这里暂时不实现
     SqlService.Insert(sqlItem);
     return(sqlItem);
 }
Example #7
0
        /// <summary>
        /// 获取列名列表
        /// </summary>
        /// <param name="dialect">Sql方言</param>
        /// <param name="register">实体别名注册器</param>
        public string ToSql(IDialect dialect, IEntityAliasRegister register)
        {
            if (Raw || IsAggregation)
            {
                return(dialect.GetColumn(Name, dialect.GetSafeName(ColumnAlias)));
            }
            var result = new SqlItem(Name, GetTableAlias(register), ColumnAlias, isResolve: false);

            return(result.ToSql(dialect));
        }
Example #8
0
 public int Execute(SqlItem sql)
 {
     using (var conn = new SqlConnection(""))
     {
         conn.Open();
         using (var command = new SqlCommand(sql.Body, conn))
         {
             return(command.ExecuteNonQuery());
         }
     }
 }
Example #9
0
 public int ExecuteNonQuery(SqlItem sqlItem)
 {
     using (var connection = new MySqlConnection(DatabaseItem.ConnectionString))
     {
         connection.Open();
         using (var command = new MySqlCommand(sqlItem.Content, connection))
         {
             return((sqlItem.RecordsAffected = command.ExecuteNonQuery()).Value);
         }
     }
 }
Example #10
0
        public static string GetMappedStaticSql(string sqlName)
        {
            SqlItem item = GetMappedStatement(sqlName);

            if (item == null)
            {
                return(sqlName);
            }

            return(item.dynamic(null));
        }
Example #11
0
        private static string ParseDynamicSql(string mapSql, IDictionary <string, object> p, IDictionary <string, string> where)
        {
            SqlItem info = StatementParser.GetMappedStatement(mapSql);

            if (info == null)
            {
                return(mapSql);
            }

            return(info.dynamic(p));//会修改参数p的列表
        }
Example #12
0
        public void TestColumnResolver()
        {
            var sqlItem = new SqlItem
            {
                DatabaseId = 1,
                Created    = DateTime.Now,
                CreaterId  = 1,
                Content    = "select 1"
            };

            var sqlService = new SqlService(null);

            sqlService.Insert(sqlItem);
        }
Example #13
0
        /// <summary>
        /// 批量转换输出显示条目到sql语句
        /// </summary>
        /// <param name="strings"></param>
        /// <returns></returns>
        private List <String> ConvertStrings2Sqls(String[] strings)
        {
            List <String> result = new List <String>();

            foreach (var dispStr in strings)
            {
                if (dispStr == "")
                {
                    continue;
                }
                SqlItem sqlItem = GetSqlItemFromDisplayedString(dispStr);
                result.Add(sqlItem.SqlString);
            }
            return(result);
        }
Example #14
0
        public SqlItem Add2(string shopname, string itemname, double quantity)
        {
            SqlShop shop = Context.SqlShops.Where(x => x.Name.ToLower() == shopname.ToLower()).OrderBy(x => x.ShopID).LastOrDefault();

            SqlItem item = new SqlItem()
            {
                ShopID   = shop.ShopID,
                Name     = itemname,
                Quantity = quantity
            };

            Context.SqlItems.Add(item);
            Context.SaveChanges();

            return(item);
        }
Example #15
0
        public IHttpActionResult PostSqlItem(SqlItem sqlItem)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            sqlItem.ID      = db.SqlItems.Any() ? db.SqlItems.Max(i => i.ID) + 1 : 1;
            sqlItem.Record  = 0;
            sqlItem.Message = string.Empty;
            sqlItem.Creater = User;
            sqlItem.Created = DateTime.Now;

            db.SqlItems.Add(sqlItem);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = sqlItem.ID }, sqlItem));
        }
Example #16
0
        public object GetCurrentUserProfiles(string parameter)
        {
            var userID = GetCurrentUserID(null);

            if (string.IsNullOrEmpty(userID.ToString()))
            {
                "UserProfiles".Log("当前用户未登录或已超时");
                return("");
            }

            var sessionID = string.Format("UserProfiles_{0}", userID);
            var oldValue  = HttpContext.Current.Session[sessionID];

            if (oldValue != null && oldValue is RowEntity)
            {
                var userItem = oldValue as RowEntity;
                return(userItem.GetValue(parameter, null));
            }

            SqlItem sqlitem = SqlData.Current.GetShare(SqlGetProfiles);

            if (sqlitem == null)
            {
                throw new Exception(string.Format("还未设置取用户属性的查询[{0}]", SqlGetProfiles));
            }

            var item = sqlitem.ExecuteQuery <RowEntity>("UserID", GetCurrentUserID(null)).FirstOrDefault();

            if (item == null)
            {
                "UserProfiles".Log("查询用户属性为空");
                return("");
            }

            HttpContext.Current.Session[sessionID] = item;
            return(item.GetValue(parameter, null));
        }
        private static DirectedGraph BuildGraph(Dictionary<string, string> allDbObjTypes, Tuple<string, string, string>[] allDependencies)
        {
            var graph = new AdjacencyGraph<SqlItem, Edge<SqlItem>>();
            foreach (var item in allDependencies)
            {
                string objType1, objType2;
                objType1 = allDbObjTypes.TryGetValue(item.Item1, out objType1) ? objType1 : "Unknown";
                objType2 = allDbObjTypes.TryGetValue(item.Item2, out objType2) ? objType2 : "Unknown";
                SqlItem sqlItem1 = new SqlItem(item.Item1, objType1);
                SqlItem sqlItem2 = new SqlItem(item.Item2, objType2);
                Edge<SqlItem> newEdge = new Edge<SqlItem>(sqlItem1, sqlItem2);
                graph.AddVerticesAndEdge(newEdge);
            }

            foreach (string item in allDbObjTypes.Values.Distinct())
            {
                Console.WriteLine(item);
            }

            var graphToDirectedGraphML = graph.ToDirectedGraphML(vertex => vertex.Name,
                                                                ege => string.Empty,
                                                                (sqI, dgn) => { dgn.TypeName = GetShortSqlTypeName(sqI.SqlType); },
                                                                (eqi, dgl) => { });
            return graphToDirectedGraphML;
        }