Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 03.10.2020
Сообщений: 129
1
MySQL

Как правильно в запросе к бд обозначать нужные столбцы?

29.01.2024, 14:49. Показов 987. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я хочу чтобы пользователь вводил название столбца в строку и другой параметр и получал данные из бд. Допустим, у меня есть две переменные в которые я помещаю данные.
C#
1
2
double st=150;
string st2=20;
Я написал и проверил запрос в приложении MAMP.
C#
1
SELECT `150` FROM `название таблицы` WHERE  st2=20;
Все выводится, все шикарно. И вот я этот запрос пытаюсь реализовать в Visual Studio:
C#
1
2
3
4
5
6
7
using (var connection = bd.getConnection())
{
    MySqlCommand command = new MySqlCommand("SELECT `@st` FROM `название таблицы` WHERE st2=@st2", connection);
    command.Parameters.AddWithValue("@st", st);
command.Parameters.AddWithValue("@st2", st2);
    connection.Open();
    string st3 = Convert.ToString(command.ExecuteScalar());
В итоге на строчке string st3 = Convert.ToString(command.ExecuteScalar()); у меня программа останавливается и выдает ошибку
MySql.Data.MySqlClient.MySqlException: "Unknown column 'st' in 'field list'"
Как это исправить? Я убирал заглушку, но это не помогло.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2024, 14:49
Ответы с готовыми решениями:

Как отсеять не нужные мне поля в запросе
ВЫБРАТЬ РегистрПоКонтрагентамОбороты.Склад КАК Склад, РегистрПоКонтрагентамОбороты.Товар КАК...

Как правильно выбрать нужные записи?
Работаю на perl. Думаю актульна проблема и с другими средствами... Подключаюсь к СУБД (неважно...

Как объединить столбцы в запросе?
Здравствуйте! Создаю запрос на вывод должников и суммы долга. Есть несколько проблем(( помогите,...

Как правильно удалить нужные строки из массива
allKey - текущая строка из массива allKeys; filterWord - стоп-слово, если allKey содержит...

12
2643 / 1902 / 356
Регистрация: 14.08.2018
Сообщений: 6,133
Записей в блоге: 4
29.01.2024, 15:23 2
Цитата Сообщение от Sergei200 Посмотреть сообщение
C#
1
double st=150;
И
Цитата Сообщение от Sergei200 Посмотреть сообщение
вводил название столбца в строку
Что-то не очень сходится. Название поля в таблице это строка, но никак не число с двойной точностью...

Добавлено через 2 минуты
Sergei200, Если уж хотите проверить, то выполните вот такое
SQL
1
2
3
4
5
DECLARE @st nvarchar(50) -- или как там в MySql
 
SET @st = '150'
 
SELECT @st FROM `название таблицы` WHERE  st2=20;
0
0 / 0 / 1
Регистрация: 03.10.2020
Сообщений: 129
29.01.2024, 15:36  [ТС] 3
Andrey-MSK, st=150 это название столбца. Просто, допустим, что пользователь ввёл значение 150, например, в textbox.
0
2643 / 1902 / 356
Регистрация: 14.08.2018
Сообщений: 6,133
Записей в блоге: 4
29.01.2024, 15:39 4
Sergei200, Вы запрос с параметром в СУБД, не в C#, выполнили? Оно так работает? И название это текст, а не double...
0
0 / 0 / 1
Регистрация: 03.10.2020
Сообщений: 129
29.01.2024, 15:43  [ТС] 5
Andrey-MSK, Запрос в СУБД выполнил и я об этом писал. Название у меня хоть в string, float и т.д. может хранится. Тем более у меня название столбца таблицы это число
0
2643 / 1902 / 356
Регистрация: 14.08.2018
Сообщений: 6,133
Записей в блоге: 4
29.01.2024, 15:45 6
Цитата Сообщение от Sergei200 Посмотреть сообщение
Запрос в СУБД выполнил и я об этом писал.
Мой вариант запроса с параметром работает?
Цитата Сообщение от Sergei200 Посмотреть сообщение
Название у меня хоть в string, float и т.д. может хранится. Тем более у меня название столбца таблицы это число
Это строка!!! А вы в параметр double пихаете...
0
0 / 0 / 1
Регистрация: 03.10.2020
Сообщений: 129
29.01.2024, 15:49  [ТС] 7
Andrey-MSK, Вариант с вашим запросом, пока не могу проверить. Параметр double мне был нужен для того чтобы число округлить, но с это я могу исправить
0
2643 / 1902 / 356
Регистрация: 14.08.2018
Сообщений: 6,133
Записей в блоге: 4
29.01.2024, 15:53 8
Цитата Сообщение от Sergei200 Посмотреть сообщение
пока не могу проверить
Вот вначале проверьте, а потом уже что-то пытайтесь сделать на C#. Вполне вероятно что не заработает такая конструкция. И если не заработает, то нужно делать динамический SQL.
Цитата Сообщение от Sergei200 Посмотреть сообщение
Параметр double мне был нужен для того чтобы число округлить, но с это я могу исправить
Ну тогда, после всех операций, нужно привести его к строке
C#
1
st.ToString()
0
0 / 0 / 1
Регистрация: 03.10.2020
Сообщений: 129
29.01.2024, 15:56  [ТС] 9
Andrey-MSK, Я проверял в бд. Я это третий раз говорю. Если ли бы не получилось, я бы на C# ни стал делать
0
2643 / 1902 / 356
Регистрация: 14.08.2018
Сообщений: 6,133
Записей в блоге: 4
29.01.2024, 15:58 10
Цитата Сообщение от Sergei200 Посмотреть сообщение
Я проверял в бд. Я это третий раз говорю. Если ли бы не получилось, я бы на C# ни стал делать
С параметром пробовали? Я не зря вам такую конструкцию написал. Это именно то что выдаст команда из C#.
0
0 / 0 / 1
Регистрация: 03.10.2020
Сообщений: 129
29.01.2024, 16:27  [ТС] 11
Andrey-MSK, Я сейчас проверил в C#. Короче, надо было кавычки убрать
C#
1
2
3
4
5
6
7
8
st.ToString();
using (var connection = bd.getConnection())
{
    MySqlCommand command = new MySqlCommand("SELECT @st FROM `название таблицы` WHERE st2=@st2", connection);
    command.Parameters.AddWithValue("@st", st);
command.Parameters.AddWithValue("@st2", st2);
    connection.Open();
    string st3 = Convert.ToString(command.ExecuteScalar());
0
Эксперт .NET
12286 / 8638 / 1307
Регистрация: 21.01.2016
Сообщений: 32,504
30.01.2024, 05:53 12
Sergei200, для таких вещей обычно используют разного рода query builder'ы. Т.е. текст запроса генерируют на лету, а не параметрами имена колонок предают...
0
Matthias Ronald Gerard
79 / 219 / 25
Регистрация: 11.08.2022
Сообщений: 2,285
31.01.2024, 06:45 13
Вполне возможно, что название столбца не может быть параметром.
Попробуйте склеить запрос "select " + column + "..." где column - Название столбца.
Но опасайтесь SQL Injection.
0
31.01.2024, 06:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2024, 06:45
Помогаю со студенческими работами здесь

Как привязать в запросе столбцы к справочнику
Добрый день! Имеется 2 таблицы подключенные из внешнего приложения: 1) Позиции (поля): <POS_ID>,...

Как правильно спарсить нужные данные при помощи BeautifulSoup
Мне нужно спарсить данные о времени прочтения статьи на...

Как правильно убрать не нужные заголовки активного окна из текстбокса?
Пытаюсь использовать класс GetClassName. И с помощью его отфильтровывать окна, которые должны или...

Как правильно записать-передать нужные строки матрицы в массив
нужно чтоб в итоге решалась программа на реализацию выражения с перегрузкой операторов V=M1<<M2,...

Как скрыть пустые столбцы при запросе, на VBA
Добрый вечер господа. У меня в БД есть запрос, есть форма которая открывает этот запрос через поле...

Как на ER модели обозначать полиморфную связь
Имеется полиморфная связь, например: comment_id | parent_id | morph | comment_content | author...

При поиске показывать нужные столбцы
Очень много приходиться искать в excel. Нажимаю CTRL + F и ввожу данные поиска нажав найти все и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru