Ejemplo n.º 1
0
        /// <summary>
        /// Построение основного тела SQL-запроса типа SELECT
        /// </summary>
        private StringBuilder BuildGettingMainSQL(string tableName, DbVal columnsNames)
        {
            StringBuilder sql = new StringBuilder();

            sql.Append("SELECT ");
            foreach (string row in columnsNames.Array)
            {
                sql.Append($"{row}, ");
            }
            sql.Remove(sql.Length - 2, 2);

            sql.Append($" FROM {tableName}");

            return(sql);
        }
Ejemplo n.º 2
0
        // Перегруженные методы получения данных из таблицы

        /// <summary>
        /// Получение значений указанных столбцов
        /// </summary>
        public string[][] GetFromTable(string tableName, DbVal columnsNames, string condition = "", int limit = 0)
        {
            StringBuilder sql = BuildGettingMainSQL(tableName, columnsNames);

            if (!condition.Equals(""))
            {
                sql.Append(" WHERE " + condition);
            }
            if (limit > 0)
            {
                sql.Append($" LIMIT {limit}");
            }

            return(CommandGetting(sql.ToString(), columnsNames.Length));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Проверяет, есть ли в указанной таблице запись, значения выбранных столбцов которой соответствуют переданным значениям
        /// </summary>
        public bool CheckIfInTable(string tableName, DbVal columnsNames, DbVal values)
        {
            if ((columnsNames.Length != values.Length) || tableName.Equals(""))
            {
                return(false);
            }

            var sql = new StringBuilder($"SELECT 1 FROM {tableName} WHERE ");

            for (int i = 0; i < columnsNames.Length; i++)
            {
                sql.Append($"{columnsNames[i]}={values[i]} AND ");
            }
            sql.Remove(sql.Length - 5, 5);
            sql.Append(" LIMIT 1");

            return(CommandGetting(sql.ToString(), columnsNames.Length) != null);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Добавление в таблицу новой записи с переданными значениями переданных столбцов
        /// </summary>
        public bool AddToTable(string tableName, DbVal columnsNames, DbVal values)
        {
            if (columnsNames.Length != values.Length || tableName.Equals(""))
            {
                return(false);
            }

            NpgsqlCommand cmd = CreateCmd();

            // Формирование SQL-команды
            StringBuilder sql = new StringBuilder();

            sql.Append($"INSERT INTO {tableName} (");
            foreach (string columnName in columnsNames.Array)
            {
                sql.Append($"{columnName}, ");
            }
            sql.Remove(sql.Length - 2, 2);

            sql.Append(") VALUES (");
            for (int i = 0; i < values.Length; i++)
            {
                sql.Append($"@v{i}, ");
            }
            sql.Remove(sql.Length - 2, 2);
            sql.Append(")");

            cmd.CommandText = sql.ToString();

            // Добавление параметров (значений)
            for (int i = 0; i < values.Length; i++)
            {
                cmd.Parameters.AddWithValue($"v{i}", values[i]);
            }

            try
            {
                return(cmd.ExecuteNonQuery() != 0);
            }
            catch
            {
                return(false);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Изменение в таблице значений переданных столбцов на переданные. Условие должно быть описано на языке SQL.
        /// </summary>
        public bool ChangeInTable(string tableName, DbVal columnsNames, DbVal values, string condition = "")
        {
            if (columnsNames.Length != values.Length || tableName.Equals(""))
            {
                return(false);
            }

            NpgsqlCommand cmd = CreateCmd();

            // Формирование SQL-команды
            StringBuilder sql = new StringBuilder();

            sql.Append($"UPDATE {tableName} SET ");
            for (int i = 0; i < columnsNames.Length; i++)
            {
                sql.Append($"{columnsNames[i]}=@v{i}, ");
            }
            sql.Remove(sql.Length - 2, 2);

            if (!condition.Equals(""))
            {
                sql.Append(" WHERE " + condition);
            }

            cmd.CommandText = sql.ToString();

            // Добавление параметров (значений)
            for (int i = 0; i < values.Length; i++)
            {
                cmd.Parameters.AddWithValue($"v{i}", values[i]);
            }

            try
            {
                return(cmd.ExecuteNonQuery() != 0);
            }
            catch
            {
                return(false);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Получение значений указанных столбцов с сортировкой
        /// </summary>
        public string[][] GetFromTableSorted(string tableName, DbVal columnsNames, string orderBy, IDatabase.OrderType orderType = IDatabase.OrderType.ASC,
                                             string condition = "", int limit = 0)
        {
            if (!columnsNames.Array.Contains(orderBy))
            {
                return(null);
            }

            StringBuilder sql = BuildGettingMainSQL(tableName, columnsNames);

            if (!condition.Equals(""))
            {
                sql.Append(" WHERE " + condition);
            }
            sql.Append($" ORDER BY {orderBy} {orderType}");
            if (limit > 0)
            {
                sql.Append($" LIMIT {limit}");
            }

            return(CommandGetting(sql.ToString(), columnsNames.Length));
        }