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

Я получаю следующую ошибку:

<Р> ОШИБКА: -201   MEssage: [Informix .NET provider] [Informix] Произошла синтаксическая ошибка.

когда я пытаюсь выполнить этот код:

string table_name = resultDt.Rows[0][1].ToString();
string pdf_column = resultDt.Rows[0][0].ToString();
st.Append(" SELECT  ? FROM ?");
paramList.Clear();
paramList.Add("@tablename", table_name);
paramList.Add("@pdf_column", pdf_column);
resultDt =dalHelper.Return_DataTable(st.ToString(), CommandType.Text, paramList);
return resultDt;
1
Почему бы не использовать как "SELECT" + pdf_column + "FROM" + table_name ?
добавлено автор Kaf, источник

1 ответы

Вы не можете.

Вместо этого используйте String.Replace.

st.Append(" SELECT @pdf_column FROM @tablename");
st.Replace("@tablename", table_name);
st.Replace("@pdf_column", pdf_column);

Если table_name и pdf_column поступают из пользовательского ввода, вы должны использовать функцию QuoteName (т. Е. QuoteName (table_name) ), чтобы предотвратить SQL-инъекцию. Не знаю об Informix, но здесь является для SqlServer.

3
добавлено
это информационный способ?
добавлено автор Anyname Donotcare, источник
Это для любой базы данных. Оператор sql содержит столбец и таблицу перед отправкой в ​​базу данных
добавлено автор adrianm, источник
Вы можете использовать только заполнители для значений, а не для структурных элементов запроса, таких как имена таблиц или имена столбцов.
добавлено автор Jonathan Leffler, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)