Hardevsinh Mori Ответов: 2

Как передать имя столбца в качестве параметра в SQL-команде?


Как я могу передать имя столбца в команде select в качестве параметра?

я хочу выбрать наиболее подходящие значения, указав имя столбца в качестве параметра, потому что мое имя столбца значения и значение будут одинаковыми.

Что я уже пробовал:

пример кода:

string mname="C-1";//It is column name 
string sname="1.2"; 
MySqlCommand co = new MySqlCommand("select @mname from capacity_master where(nsize=@nsize)", cn);
                co.Parameters.AddWithValue("@mname", mname);
                co.Parameters.AddWithValue("@nsize", sname);
                using(MySqlDataReader cor = co.ExecuteReader())
                {
                    while (cor.Read())
                    {
                        capinhrs = 11;
                        capinkgs = double.Parse(cor[0].ToString());
                    }
                }

[no name]

Я знаю, что этот вопрос задавался раньше, но все ответы, связанные с хранимой процедурой, и я хотел получить из таблицы.

2 Ответов

Рейтинг:
2

OriginalGriff

Цитата:
Я знаю, что этот вопрос задавался раньше, но все ответы, связанные с хранимой процедурой, и я хотел получить из таблицы.


Это точно то же самое для хранимой процедуры или команды. Имя столбца - это имя столбца.

Но... на вашем уровне желание сделать это обычно является признаком того, что ваш дизайн базы данных неисправен. Вам не нужно "играть" с именами столбцов в качестве параметров, если только у вас нет серьезных недостатков в вашем дизайне.


Рейтинг:
16

Wendelius

Структура таблицы статична, и во многих случаях такой же должна быть структура SQL-оператора, запрашивающего таблицу. В некоторых сценариях вам может понадобиться, чтобы оператор SQL был динамическим, но это не очень распространено.

Вы говорите:

i want to select best match values by providing column name as parameter because my value column name and value will be same.

Обычно вы не выбираете столбец результата на основе совпадения значений, а выбираете столбец для вашего запроса, потому что модель определяет, что он содержит интересующие вас данные. Таким образом, приведенное выше утверждение действительно звучит так, что есть что-то неправильное в том, как вы используете таблицу.

Но чтобы ответить на ваш вопрос, при использовании динамических операторов SQL структурные части операторов должны быть явно определены, поэтому вы не можете передавать имена столбцов, таблиц и т. д. В качестве параметров. Если вы будете использовать динамический SQL, то вам нужно будет объединить имена в оператор.

Но, как уже было сказано,это не похоже на то, что динамический SQL был бы правильным путем.


[no name]

я нашел свой ответ в вашем решении, спасибо. Венделиус Сэр