Преобразовать метод в параметризованный запрос? - PullRequest
0 голосов
/ 26 августа 2010

Я хочу создать обобщенный метод для извлечения последовательностей для моего приложения (OLEDB asp.net DB2)

   var seqName="Table1";
   string query="SELECT NEXTVAL FOR SchemaName."+seqName+" as seqid FROM sysibm.sysdummy1";

                using (OleDbCommand myCommand=new OleDbCommand(query,myConnection))
                {

                    myConnection.Open();
                    result = Convert.ToInt32(myCommand.ExecuteScalar());
                }

Использование этого вместо не будет работать

   var seqName="mySeq1";
   string query="SELECT NEXTVAL FOR SchemaName.? as seqid FROM sysibm.sysdummy1";

                using (OleDbCommand myCommand=new OleDbCommand(query,myConnection))
                {
                    myCommand.Parameters.Add(new OleDbParameter("TabName",seqName));
                    myConnection.Open();
                    result = Convert.ToInt32(myCommand.ExecuteScalar());
                }

бросает

   SQL0104: Token ? was not valid. Valid tokens: <IDENTIFIER>.
Cause . . . . . :   A syntax error was detected at token ?.  Token ? is

недопустимый токен. Частичный список действительные токены есть. это список предполагает, что утверждение исправить до жетона. Ошибка может быть раньше в заявлении, но синтаксис утверждения выглядит как быть действительным до этого момента. Восстановление , , : Сделать один или несколько из следуйте и попробуйте запрос еще раз: - Проверить оператор SQL в области токена? Исправить заявление. Ошибка может быть отсутствует запятая или кавычка, это может быть слово с ошибкой, или это может быть связано с порядком статьи. - Если токен ошибки поправьте SQL заявление, потому что оно не заканчивается действительное предложение.

1 Ответ

1 голос
/ 26 августа 2010

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

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

...