Параметризованное обновление с использованием Sql Server - PullRequest
0 голосов
/ 25 апреля 2018

Я конвертирую приложение winforms из MS Access в SQLServer Express.

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

Код генерирует SQL-элемент statememnt, который передается в виде запроса вместе со значениями в качестве параметров ... пример вывода

UPDATE userVersion SET lastUpdated=?, userId=?, userName=?, version=? WHERE userId = 1299

если я попытаюсь запустить это на sqlserver, система вылетает с этой ошибкой

System.Data.SqlClient.SqlException: 'Неверный синтаксис рядом с'? '. Неверный синтаксис рядом с '?'. '

Какой правильный формат для сервера sql?

1 Ответ

0 голосов
/ 25 апреля 2018

На основании ошибки вы используете SQLClient для выполнения запроса, но структура запроса выглядит так, как будто она ближе к команде ODBC.

В случае, если это поможет, System.Data.ODBC.ODBCCommand использует "?" символ в качестве заполнителя для параметров. В этом случае важен порядок параметров. https://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.parameters(v=vs.110).aspx

System.Data.SQLClient.SQLCommand использует именованные переменные (например, @MyVariable) для указания переменных. В этом случае порядок не важен, если имена указаны правильно. https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters(v=vs.110).aspx

ODBCCommand будет выглядеть так:

UPDATE Sales.Store SET Demographics = @demographics WHERE CustomerID = ?;

Хотя SQLCommand будет выглядеть так:

UPDATE Sales.Store SET Demographics = @demographics WHERE CustomerID = @ID;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...