コード例 #1
0
        private string GetSqlWithParameters()
        {
            var sql        = instruction.ToString();
            var parameters = instruction.GetParameters();
            var sb         = new StringBuilder();
            var i          = 0;

            foreach (var part in sql.Split('?'))
            {
                sb.Append(part);
                if (i < parameters.Length)
                {
                    var p = parameters[i];
                    if (p == null)
                    {
                        sb.Append("null");
                    }
                    else if (p is string || p is char || p is DateTime || p is Guid)
                    {
                        sb.AppendFormat("'{0}'", p);
                    }
                    else
                    {
                        sb.Append(p);
                    }
                }
                i++;
            }
            return(sb.ToString());
        }
コード例 #2
0
 public override string ToString(ISqlDialect dialect)
 {
     return(string.Format("{0} {1} {2}",
                          column1.ToString(dialect),
                          Not ? "<>" : "=",
                          column2.ToString(dialect)));
 }
コード例 #3
0
        public override string ToString()
        {
            if (i == null)
            {
                return(null);
            }

            var parts   = i.ToString().Split('?');
            var result  = new StringBuilder(parts[0]);
            var counter = 0;

            foreach (var p in i.GetParameters())
            {
                counter++;
                if (p == null)
                {
                    result.Append("null");
                }
                else
                {
                    var format = "{0}";
                    if (p is DateTime || p is Guid || p is string)
                    {
                        format = "'{0}'";
                    }
                    result.AppendFormat(format, p);
                }
                if (counter < parts.Length)
                {
                    result.Append(parts[counter]);
                }
            }
            return(result.ToString());
        }
コード例 #4
0
        private string GetSqlWithParameters()
        {
            var sql        = instruction.ToString();
            var parameters = instruction.GetParameters();
            var sb         = new StringBuilder();
            var i          = 0;
            var sqlParts   = sql.Split('?');
            var pCount     = parameters.Count();

            foreach (var p in parameters)
            {
                sb.Append(sqlParts[i]);
                if (i < pCount)
                {
                    if (p == null)
                    {
                        sb.Append("null");
                    }
                    else if (p is string || p is char || p is DateTime || p is Guid)
                    {
                        sb.AppendFormat("'{0}'", p);
                    }
                    else
                    {
                        sb.Append(p);
                    }
                }
                i++;
            }
            return(sb.ToString());
        }
コード例 #5
0
        private IDbCommand CreateCommand(ISqlInstruction sql)
        {
            var command    = GetConnection().CreateCommand();
            var parameters = sql.GetParameters().ToArray();
            var parts      = sql.ToString(dialect).Split('?');
            var result     = new StringBuilder();

            for (var i = 0; i < parts.Length - 1; i++)
            {
                var p = command.CreateParameter();
                p.ParameterName = "p" + i;
                if (parameters[i] == null)
                {
                    p.Value = DBNull.Value;
                }
                else if (parameters[i] is Enum)
                {
                    p.Value = ((Enum)parameters[i]).ToString("d");
                }
                else
                {
                    p.Value = parameters[i];
                }
                command.Parameters.Add(p);
                result.AppendFormat("{0}@{1}", parts[i], p.ParameterName);
            }
            result.Append(parts[parts.Length - 1]);
            command.CommandText = result.ToString();
            return(command);
        }
コード例 #6
0
        private static void ApplySqlInstruction(IDbCommand command, ISqlInstruction sql, ISqlDialect dialect)
        {
            var sqlStr     = sql.ToString(dialect);
            var parameters = sql.GetParameters();

            command.Parameters.Clear();

            var sqlParts   = sqlStr.Split('?');
            var sqlBuilder = new StringBuilder();

            for (var i = 0; i < sqlParts.Length - 1; i++)
            {
                var name = "p" + i;
                command.AddParameter(name, parameters[i]);
                sqlBuilder.AppendFormat("{0}@{1}", sqlParts[i], name);
            }
            sqlBuilder.Append(sqlParts[sqlParts.Length - 1]);
            command.CommandText = sqlBuilder.ToString();
        }
コード例 #7
0
ファイル: SqlExp.cs プロジェクト: julthep/CommunityServer
 public override string ToString(ISqlDialect dialect)
 {
     return(ins != null?ins.ToString(dialect) : sql);
 }
コード例 #8
0
ファイル: IfExp.cs プロジェクト: yanllllk/CommunityServer
 public override string ToString(ISqlDialect dialect)
 {
     return(string.Format("if({0}, ?, ?)", _condition.ToString(dialect)));
 }
コード例 #9
0
 protected int ExecuteNonQuery(ISqlInstruction sql)
 {
     lock (syncRoot)
     {
         try
         {
             return(db.ExecuteNonQuery(sql));
         }
         catch (DbException ex)
         {
             _log.ErrorFormat("DbException: {0} {1} {2}",
                              ex, ex.InnerException != null ? ex.InnerException.Message : String.Empty, sql.ToString());
             db.Dispose();
             db = new DbManager(db.DatabaseId, false);
             return(db.ExecuteNonQuery(sql));
         }
     }
 }
コード例 #10
0
 public override string ToString(ISqlDialect dialect)
 {
     return(string.Format("sum({0})", _exp.ToString(dialect)));
 }