コード例 #1
0
ファイル: InsertQueryBuilder.cs プロジェクト: Gadarr/Gadarr
 public InsertQueryBuilder(DataMapper db)
 {
     _db              = db;
     _tableName       = MapRepository.Instance.GetTableName(typeof(T));
     _previousSqlMode = _db.SqlMode;
     _mappingHelper   = new MappingHelper(_db);
     _mappings        = MapRepository.Instance.GetColumns(typeof(T));
     _dialect         = QueryFactory.CreateDialect(_db);
 }
コード例 #2
0
ファイル: QueryBuilder.cs プロジェクト: peterlandry/NzbDrone
        public virtual bool Any()
        {
            SqlModes previousSqlMode = _db.SqlMode;

            // Generate a row count query
            string where = _whereBuilder != null?_whereBuilder.ToString() : string.Empty;

            bool   useAltNames = _isFromView || _isGraph || _isJoin;
            IQuery query       = QueryFactory.CreateRowCountSelectQuery(_tables, _db, where, SortBuilder, useAltNames);
            string queryText   = query.Generate();

            _db.SqlMode = SqlModes.Text;
            int count = Convert.ToInt32(_db.ExecuteScalar(queryText));

            _db.SqlMode = previousSqlMode;
            return(count > 0);
        }
コード例 #3
0
        public int Delete <T>(string tableName, Expression <Func <T, bool> > filter)
        {
            // Remember sql mode
            var previousSqlMode = this.SqlMode;

            SqlMode = SqlModes.Text;

            var mappingHelper = new MappingHelper(this);

            if (tableName == null)
            {
                tableName = MapRepository.Instance.GetTableName(typeof(T));
            }
            var             dialect = QGen.QueryFactory.CreateDialect(this);
            TableCollection tables  = new TableCollection();

            tables.Add(new Table(typeof(T)));
            var where = new WhereBuilder <T>(Command, dialect, filter, tables, false, false);
            IQuery query = QueryFactory.CreateDeleteQuery(dialect, tables[0], where.ToString());

            Command.CommandText = query.Generate();

            int rowsAffected = 0;

            try
            {
                OpenConnection();
                rowsAffected = Command.ExecuteNonQuery();
            }
            finally
            {
                CloseConnection();
            }

            // Return to previous sql mode
            SqlMode = previousSqlMode;

            return(rowsAffected);
        }
コード例 #4
0
ファイル: QueryBuilder.cs プロジェクト: peterlandry/NzbDrone
        /// <summary>
        /// Executes the query and returns a list of results.
        /// </summary>
        /// <returns>A list of query results of type T.</returns>
        public virtual List <T> ToList()
        {
            SqlModes previousSqlMode = _db.SqlMode;

            ValidateQuery();

            BuildQueryOrAppendClauses();

            if (_isGraph || _isJoin)
            {
                _results = (List <T>)_db.QueryToGraph <T>(_queryText, EntGraph, _childrenToLoad);
            }
            else
            {
                _results = (List <T>)_db.Query <T>(_queryText, _results, _isFromView);
            }

            // Return to previous sql mode
            _db.SqlMode = previousSqlMode;

            return(_results);
        }
コード例 #5
0
ファイル: Select.cs プロジェクト: solutema/ultralight
 public Select(SqlModes SqlMode)
         : base(SqlMode) { }
コード例 #6
0
ファイル: Command.cs プロジェクト: solutema/ultralight
 protected Command(SqlModes SqlMode)
         : this()
 {
         m_Mode = SqlMode;
 }
コード例 #7
0
 public BeginTransactionCommand(SqlModes sqlMode)
         : base(sqlMode) { }
コード例 #8
0
ファイル: TextCommand.cs プロジェクト: njmube/lazaro
 public TextCommand(SqlModes sqlMode)
     : base(sqlMode)
 {
 }
コード例 #9
0
ファイル: TableCommand.cs プロジェクト: solutema/ultralight
 protected TableCommand(SqlModes sqlMode)
         : base(sqlMode) { }
コード例 #10
0
 protected Command(SqlModes SqlMode)
     : this()
 {
     m_Mode = SqlMode;
 }
コード例 #11
0
ファイル: Insert.cs プロジェクト: solutema/ultralight
        private string SqlText(SqlModes sqlMode, bool valuesOnly)
        {
            System.Text.StringBuilder FieldList = new System.Text.StringBuilder();
            System.Text.StringBuilder ParamList = new System.Text.StringBuilder();
            foreach (Lfx.Data.Field ThisField in this.Fields)
            {
                if (FieldList.Length == 0)
                {
                    FieldList.Append(@"""" + ThisField.ColumnName + @"""");
                }
                else
                {
                    FieldList.Append(@", """ + ThisField.ColumnName + @"""");
                }

                string ParamValue = "";
                if (ThisField.Value == null || ThisField.Value == DBNull.Value)
                {
                    ParamValue = "NULL";
                }
                else
                {
                    string Tipo = ThisField.Value.GetType().Name.Replace("System.", "");
                    switch (Tipo)
                    {
                    case "qGen.SqlFunctions":
                        switch (((qGen.SqlFunctions)(ThisField.Value)))
                        {
                        case SqlFunctions.Now:
                            ParamValue = "NOW()";
                            break;

                        default:
                            throw new NotImplementedException();
                        }
                        break;

                    case "Lfx.Data.SqlLiteral":
                        ParamValue = ThisField.Value.ToString();
                        break;

                    case "Lfx.Data.LDateTime":
                        ParamValue = "'" + ((NullableDateTime)(ThisField.Value)).Value.ToString(Lfx.Types.Formatting.DateTime.SqlDateTimeFormat) + "'";
                        break;

                    case "DateTime":
                        ParamValue = "'" + System.Convert.ToDateTime(ThisField.Value).ToString(Lfx.Types.Formatting.DateTime.SqlDateTimeFormat) + "'";
                        break;

                    case "Single":
                    case "Double":
                    case "Decimal":
                        ParamValue = Lfx.Types.Formatting.FormatNumberSql(System.Convert.ToDecimal(ThisField.Value), 8);
                        break;

                    case "Integer":
                    case "Int16":
                    case "Int32":
                    case "Int64":
                        ParamValue = System.Convert.ToInt32(ThisField.Value).ToString();
                        break;

                    default:
                        ParamValue = "'" + Lfx.Data.Connection.EscapeString(ThisField.Value.ToString(), sqlMode) + "'";
                        break;
                    }
                }

                if (ParamList.Length == 0)
                {
                    ParamList.Append(ParamValue);
                }
                else
                {
                    ParamList.Append(", " + ParamValue);
                }
            }

            if (valuesOnly)
            {
                return("(" + ParamList.ToString() + ")");
            }
            else
            {
                string Res = @"INSERT INTO """ + this.Tables + @""" (" + FieldList.ToString() + ") VALUES (" + ParamList.ToString() + ")";

                if (this.OnDuplicateKeyUpdate)
                {
                    string UpdateClause = null;
                    foreach (Lfx.Data.Field ThisField in this.Fields)
                    {
                        if (UpdateClause == null)
                        {
                            UpdateClause = @" ON DUPLICATE KEY UPDATE """ + ThisField.ColumnName + @"""=VALUES(""" + ThisField.ColumnName + @""")";
                        }
                        else
                        {
                            UpdateClause += @", """ + ThisField.ColumnName + @"""=VALUES(""" + ThisField.ColumnName + @""")";
                        }
                    }

                    Res += UpdateClause;
                }

                return(Res);
            }
        }
コード例 #12
0
ファイル: Insert.cs プロジェクト: solutema/ultralight
 public Insert(SqlModes SqlMode)
     : base(SqlMode)
 {
 }
コード例 #13
0
ファイル: Insert.cs プロジェクト: solutema/ultralight
 private string SqlText(SqlModes sqlMode)
 {
     return(this.SqlText(sqlMode, false));
 }
コード例 #14
0
ファイル: Where.cs プロジェクト: solutema/ultralight
 public string ToString(SqlModes mode)
 {
     this.SqlMode = mode;
     return(this.ToString());
 }
コード例 #15
0
ファイル: CommitCommand.cs プロジェクト: njmube/lazaro
 public CommitCommand(SqlModes sqlMode)
     : base(sqlMode)
 {
 }
コード例 #16
0
ファイル: SetCommand.cs プロジェクト: solutema/ultralight
 public SetCommand(SqlModes sqlMode)
     : base(sqlMode)
 {
 }
コード例 #17
0
 public RollBackCommand(SqlModes sqlMode)
         : base(sqlMode) { }
コード例 #18
0
 public BeginTransactionCommand(SqlModes sqlMode)
     : base(sqlMode)
 {
 }
コード例 #19
0
ファイル: Update.cs プロジェクト: solutema/ultralight
        public string SqlText(SqlModes sqlMode)
        {
            System.Text.StringBuilder FieldList = new System.Text.StringBuilder();
            foreach (Lfx.Data.Field ThisField in this.Fields)
            {
                if (FieldList.Length == 0)
                {
                    FieldList.Append(@"""" + ThisField.ColumnName + @"""");
                }
                else
                {
                    FieldList.Append(@", """ + ThisField.ColumnName + @"""");
                }

                string ParamValue = "";
                if (ThisField.Value == null || ThisField.Value == DBNull.Value)
                {
                    ParamValue = "NULL";
                }
                else
                {
                    switch (ThisField.Value.GetType().Name)
                    {
                    case "qGen.SqlFunctions":
                        switch (((qGen.SqlFunctions)(ThisField.Value)))
                        {
                        case SqlFunctions.Now:
                            ParamValue = "NOW()";
                            break;

                        default:
                            throw new NotImplementedException();
                        }
                        break;

                    case "Lfx.Data.SqlLiteral":
                        ParamValue = ThisField.Value.ToString();
                        break;

                    case "System.Single":
                    case "System.Double":
                    case "System.Decimal":
                        ParamValue = Lfx.Types.Formatting.FormatNumberSql(System.Convert.ToDecimal(ThisField.Value), 8);
                        break;

                    case "System.Integer":
                    case "System.Int16":
                    case "System.Int32":
                    case "System.Int64":
                        ParamValue = System.Convert.ToInt32(ThisField.Value).ToString();
                        break;

                    default:
                        ParamValue = "'" + Lfx.Data.Connection.EscapeString(ThisField.Value.ToString(), sqlMode) + "'";
                        break;
                    }
                }

                FieldList.Append("=" + ParamValue);
            }

            return(@"UPDATE """ + this.Tables + @""" SET " + FieldList.ToString() + " WHERE " + this.WhereClause.ToString());
        }
コード例 #20
0
 public RollBackCommand(SqlModes sqlMode)
     : base(sqlMode)
 {
 }
コード例 #21
0
 public Select(SqlModes SqlMode)
     : base(SqlMode)
 {
 }
コード例 #22
0
ファイル: Update.cs プロジェクト: solutema/ultralight
                public string SqlText(SqlModes sqlMode)
                {
                        System.Text.StringBuilder FieldList = new System.Text.StringBuilder();
                        foreach (Lfx.Data.Field ThisField in this.Fields) {
                                if (FieldList.Length == 0)
                                        FieldList.Append(@"""" + ThisField.ColumnName + @"""");
                                else
                                        FieldList.Append(@", """ + ThisField.ColumnName + @"""");

                                string ParamValue = "";
                                if (ThisField.Value == null || ThisField.Value == DBNull.Value) {
                                        ParamValue = "NULL";
                                } else {
                                        switch (ThisField.Value.GetType().Name) {
                                                case "qGen.SqlFunctions":
                                                        switch (((qGen.SqlFunctions)(ThisField.Value))) {
                                                                case SqlFunctions.Now:
                                                                        ParamValue = "NOW()";
                                                                        break;
                                                                default:
                                                                        throw new NotImplementedException();
                                                        }
                                                        break;
                                                case "Lfx.Data.SqlLiteral":
                                                        ParamValue = ThisField.Value.ToString();
                                                        break;
                                                case "System.Single":
                                                case "System.Double":
                                                case "System.Decimal":
                                                        ParamValue = Lfx.Types.Formatting.FormatNumberSql(System.Convert.ToDecimal(ThisField.Value), 8);
                                                        break;
                                                case "System.Integer":
                                                case "System.Int16":
                                                case "System.Int32":
                                                case "System.Int64":
                                                        ParamValue = System.Convert.ToInt32(ThisField.Value).ToString();
                                                        break;
                                                default:
                                                        ParamValue = "'" + Lfx.Data.Connection.EscapeString(ThisField.Value.ToString(), sqlMode) + "'";
                                                        break;
                                        }
                                }

                                FieldList.Append("=" + ParamValue);

                        }

                        return @"UPDATE """ + this.Tables + @""" SET " + FieldList.ToString() + " WHERE " + this.WhereClause.ToString();
                }
コード例 #23
0
 protected TableCommand(SqlModes sqlMode)
     : base(sqlMode)
 {
 }
コード例 #24
0
ファイル: Update.cs プロジェクト: solutema/ultralight
 public Update(SqlModes SqlMode)
     : base(SqlMode)
 {
 }
コード例 #25
0
ファイル: Update.cs プロジェクト: solutema/ultralight
 public Update(SqlModes SqlMode)
         : base(SqlMode) { }
コード例 #26
0
ファイル: CommitCommand.cs プロジェクト: solutema/ultralight
 public CommitCommand(SqlModes sqlMode)
         : base(sqlMode) { }
コード例 #27
0
ファイル: Insert.cs プロジェクト: solutema/ultralight
 private string SqlText(SqlModes sqlMode)
 {
         return this.SqlText(sqlMode, false);
 }
コード例 #28
0
ファイル: SetCommand.cs プロジェクト: solutema/ultralight
 public SetCommand(SqlModes sqlMode)
         : base(sqlMode) { }
コード例 #29
0
ファイル: Insert.cs プロジェクト: solutema/ultralight
                private string SqlText(SqlModes sqlMode, bool valuesOnly)
                {
                        System.Text.StringBuilder FieldList = new System.Text.StringBuilder();
                        System.Text.StringBuilder ParamList = new System.Text.StringBuilder();
                        foreach (Lfx.Data.Field ThisField in this.Fields) {
                                if (FieldList.Length == 0)
                                        FieldList.Append(@"""" + ThisField.ColumnName + @"""");
                                else
                                        FieldList.Append(@", """ + ThisField.ColumnName + @"""");

                                string ParamValue = "";
                                if (ThisField.Value == null || ThisField.Value == DBNull.Value) {
                                        ParamValue = "NULL";
                                } else {
                                        string Tipo = ThisField.Value.GetType().Name.Replace("System.", "");
                                        switch (Tipo) {
                                                case "qGen.SqlFunctions":
                                                        switch (((qGen.SqlFunctions)(ThisField.Value))) {
                                                                case SqlFunctions.Now:
                                                                        ParamValue = "NOW()";
                                                                        break;
                                                                default:
                                                                        throw new NotImplementedException();
                                                        }
                                                        break;
                                                case "Lfx.Data.SqlLiteral":
                                                        ParamValue = ThisField.Value.ToString();
                                                        break;
                                                case "Lfx.Data.LDateTime":
                                                        ParamValue = "'" + ((NullableDateTime)(ThisField.Value)).Value.ToString(Lfx.Types.Formatting.DateTime.SqlDateTimeFormat) + "'";
                                                        break;
                                                case "DateTime":
                                                        ParamValue = "'" + System.Convert.ToDateTime(ThisField.Value).ToString(Lfx.Types.Formatting.DateTime.SqlDateTimeFormat) + "'";
                                                        break;
                                                case "Single":
                                                case "Double":
                                                case "Decimal":
                                                        ParamValue = Lfx.Types.Formatting.FormatNumberSql(System.Convert.ToDecimal(ThisField.Value), 8);
                                                        break;
                                                case "Integer":
                                                case "Int16":
                                                case "Int32":
                                                case "Int64":
                                                        ParamValue = System.Convert.ToInt32(ThisField.Value).ToString();
                                                        break;
                                                default:
                                                        ParamValue = "'" + Lfx.Data.Connection.EscapeString(ThisField.Value.ToString(), sqlMode) + "'";
                                                        break;
                                        }
                                }

                                if (ParamList.Length == 0)
                                        ParamList.Append(ParamValue);
                                else
                                        ParamList.Append(", " + ParamValue);
                        }

                        if (valuesOnly) {
                                return "(" + ParamList.ToString() + ")";
                        } else {
                                string Res = @"INSERT INTO """ + this.Tables + @""" (" + FieldList.ToString() + ") VALUES (" + ParamList.ToString() + ")";

                                if (this.OnDuplicateKeyUpdate) {
                                        string UpdateClause = null;
                                        foreach (Lfx.Data.Field ThisField in this.Fields) {
                                                if (UpdateClause == null)
                                                        UpdateClause = @" ON DUPLICATE KEY UPDATE """ + ThisField.ColumnName + @"""=VALUES(""" + ThisField.ColumnName + @""")";
                                                else
                                                        UpdateClause += @", """ + ThisField.ColumnName + @"""=VALUES(""" + ThisField.ColumnName + @""")";
                                        }

                                        Res += UpdateClause;
                                }

                                return Res;
                        }
                }
コード例 #30
0
ファイル: Insert.cs プロジェクト: solutema/ultralight
 public Insert(SqlModes SqlMode)
         : base(SqlMode) { }
コード例 #31
0
ファイル: TextCommand.cs プロジェクト: solutema/ultralight
 public TextCommand(SqlModes sqlMode)
         : base(sqlMode) { }