コード例 #1
0
ファイル: ModuleController.cs プロジェクト: kainhong/wms
 private string GetWhereStatement(Query query,DataQuery q)
 {
     var script = q.SelectSQL;
     List<string> conditions = new List<string>();
     Dictionary<string, object> parameters = new Dictionary<string, object>();
     foreach (var p in query.Parameters)
     {
         var field = q.Fields[p.FeildName];
         var val = p.Value;
         //if (string.IsNullOrEmpty(val))
         if( val == null)
             continue;
         string format = field.DataType == DbType.String ? "{0} = '{1}'" : "{0} = {1}";
         conditions.Add(string.Format(format, p.FeildName, p.Value));
     }
     var where = string.Join(" AND ", conditions.ToArray());
     if (!string.IsNullOrEmpty(where))
         script += " WHERE " + where;
     return script;
 }
コード例 #2
0
ファイル: ModuleController.cs プロジェクト: kainhong/wms
        private string ParseScript(Query query, DataQuery q, out Dictionary<string, object> @params)
        {
            var script = q.SelectSQL;
            var dict = new Dictionary<string, object>();
            var val = regex.Replace(script,new MatchEvaluator( m => {
                var name = m.Groups["name"].Value.TrimStart('@');
                var field = query.Parameters.FirstOrDefault(f => string.Compare(f.FeildName, name, true) == 0);
                dict[name] = field.Value;
                return ":" + name;
            }));
            @params = dict;

            return val;
        }
コード例 #3
0
ファイル: ModuleController.cs プロジェクト: kainhong/wms
        public QueryResult PostQuery(Query query)
        {
            DataQueryCollection lst = service.GetModuleQuery(query.ModuleId);
            var q = lst.FirstOrDefault(c => c.Name == query.DataQueryName);
            if (q == null)
                return null;
            var script = q.SelectSQL;
            Dictionary<string, object> parameters = null;// new Dictionary<string, object>()
            if (query.IsDynamic)
            {
                script = GetWhereStatement(query, q);
            }
            else
            {
                script = ParseScript(query, q, out parameters);

            }

            using (var con = Unity.GetConnection())
            {
                var cmd = con.CreateCommand();
                cmd.CommandText = script;
                cmd.Connection = con;
                if (parameters.Count > 0)
                {
                    foreach (var key in parameters.Keys)
                    {
                        var p = cmd.CreateParameter();
                        p.ParameterName = ":" + key;
                        p.Value = parameters[key];
                        cmd.Parameters.Add(p);
                    }
                }
                con.Open();
                var rd = cmd.ExecuteReader();
                var dt = new DataTable();
                dt.Load(rd);

                var result = new QueryResult() { Total = dt.Rows.Count, Data = dt };

                return result;
            }
        }