Неправильная синтаксическая ошибка рядом,

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

Одна из проблем, с которыми я сталкиваюсь, это ошибка "неправильный синтаксис рядом".

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

Я был бы очень благодарен, если бы кто-нибудь мог мне помочь.

Мой код:

SqlStr = "INSERT INTO UserTimeStamp ('username', 'id') SELECT ('username', 'id') FROM Staff WHERE password = '" & passwordTB.Text & "'"

3 ответа

Решение

Если вы ищете столбцы username и id, то это неправильный синтаксис SQL.

Основные проблемы заключаются в том, что имена столбцов заключены в одинарные кавычки и в круглые скобки. Попробуйте изменить это на это:

SqlStr = "INSERT INTO UserTimeStamp (username, id) SELECT username, id FROM Staff WHERE password = '" & passwordTB.Text & "'"

Это будет отправлено в SQL следующим образом:

INSERT INTO UserTimeStamp (username, id) 
    SELECT username, id 
    FROM Staff
    WHERE password = 'some password'

Попробуйте заключить имена столбцов в квадратные скобки следующим образом:

INSERT INTO employee ([FirstName],[LastName]) SELECT [FirstName],[LastName] FROM Employee where [id] = 1

Редактировать: также удалите скобки, окружающие выбранные поля.

Есть ряд проблем, которые я потенциально вижу.

  1. Имена столбцов не должны заключаться в кавычки, то есть INTO UserTimeStamp('username','id') должно быть INTO UserTimeStamp(username, id)

  2. Поля столбцов, кроме литеральных строк, также не должны заключаться в кавычки. т.е. SELECT ('username','id') должен быть SELECT username, id.

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

    SqlStr = "INSERT INTO UserTimeStamp (имя пользователя, id) ВЫБЕРИТЕ имя пользователя, id ИЗ персонала, ГДЕ пароль = " + MyQuoteFunction(passwordDB.Text);

Другие вопросы по тегам