Exemplo n.º 1
0
        public DbCommand GetDbCommand()
        {
            DbCommand command = DataBaseProvider.GetCommand();

            foreach (SqliteParameter parameter in _parameters)
            {
                command.Parameters.Add(parameter);
            }

            command.CommandText = _whereClausel.Count == 0 ? $"DELETE FROM \"{_tablename}\"" : $"DELETE FROM \"{_tablename}\" WHERE {string.Join(" AND ", _whereClausel.ToArray())}";
            return(command);
        }
        public DbCommand GetDbCommand()
        {
            DbCommand command = DataBaseProvider.GetCommand();

            foreach (SqliteParameter parameter in _parameters)
            {
                command.Parameters.Add(parameter);
            }

            command.CommandText = _insertFields.Count == 0 ?
                                  $"INSERT INTO \"{_tablename}\" DEFAULT VALUES;\r\nSELECT {string.Join(", ", _selectFields.ToArray())} FROM {_tablename} WHERE {string.Join(" AND ", _whereClausel.ToArray())}" :
                                  $"INSERT INTO \"{_tablename}\" ({string.Join(", ", _insertFields.ToArray())}) VALUES ({string.Join(", ", _insertValues.ToArray())});\r\nSELECT {string.Join(", ", _selectFields.ToArray())} FROM \"{_tablename}\" WHERE {string.Join(" AND ", _whereClausel.ToArray())}";

            return(command);
        }
Exemplo n.º 3
0
        public DbCommand GetDbCommand()
        {
            string[] setStrings = new string[_setValues.Count];
            int      i          = 0;

            foreach (KeyValuePair <string, string> item in _setValues)
            {
                setStrings[i] = $"{item.Key} = {item.Value}";
                i++;
            }

            DbCommand command = DataBaseProvider.GetCommand();

            foreach (SqliteParameter parameter in _parameters)
            {
                command.Parameters.Add(parameter);
            }

            command.CommandText = $"UPDATE \"{_tablename}\" SET {string.Join(", ", setStrings)} WHERE {string.Join(" AND ", _whereClausel.ToArray())};\r\nSELECT {string.Join(", ", _selectFields.ToArray())} FROM \"{_tablename}\" WHERE {string.Join(" AND ", _whereClausel.ToArray())}";
            return(command);
        }
        public DbCommand GetDbCommand()
        {
            if (string.IsNullOrEmpty(_tablename))
            {
                throw new InvalidOperationException("Tablename is not set.");
            }

            StringBuilder stringBuilder = new StringBuilder("SELECT");

            stringBuilder.Append($" {string.Join($", ", _selectFields.Select(x => $"{_alias}.{x} {x}").ToArray())} FROM \"{_tablename}\" {_alias}");

            string whereClause = null;

            if (_whereExpressions.Count == 1)
            {
                whereClause = _databaseProvider.ExpressionParser.ParseExpression(_whereExpressions[0], this);
            }
            else if (_whereExpressions.Count > 1)
            {
                foreach (LambdaExpression expression in _whereExpressions)
                {
                    if (whereClause == null)
                    {
                        whereClause = "(";
                    }
                    else
                    {
                        whereClause += " AND (";
                    }

                    whereClause += _databaseProvider.ExpressionParser.ParseExpression(expression, this) + ")";
                }
            }

            foreach (Join join in _joins)
            {
                stringBuilder.Append(" LEFT OUTER ").Append(join);
            }

            if (!string.IsNullOrWhiteSpace(whereClause))
            {
                stringBuilder.Append(" WHERE ").Append(whereClause);
            }

            if (_orderbyExpressions.Count != 0)
            {
                stringBuilder.Append(" ORDER BY ").Append(string.Join(", ", _orderbyExpressions.Select(
                                                                          exp => exp.Item2 ?
                                                                          _databaseProvider.ExpressionParser.ParseExpression(exp.Item1, this) + " DESC":
                                                                          _databaseProvider.ExpressionParser.ParseExpression(exp.Item1, this)
                                                                          ).ToArray()));
            }

            if (_top > -1)
            {
                stringBuilder.AppendFormat(" LIMIT {0}", _top);
            }

            DbCommand command = DataBaseProvider.GetCommand();

            foreach (SqliteParameter parameter in _parameters)
            {
                command.Parameters.Add(parameter);
            }

            command.CommandText = stringBuilder.ToString();
            return(command);
        }