Проблема с синтаксической ошибкой в ​​операторе SQL - PullRequest
1 голос
/ 30 октября 2019

Я пытаюсь получить конкретное единственное значение из базы данных Access, используя C #.

По какой-то причине я запрашиваю исключение

Синтаксическая ошибка в предложении FROM

, и я не могу понять, почему.

Я попытался запустить SQL непосредственно в самом Access, и он прекрасно работает и возвращает мне нужные результаты, но я не знаю, почему он не работает в моей программе.

ProbID является числовым полем, насколько Access описывает его, а CorrDetails является памятным полем.

Для простоты я установил SQL для поиска определенного значения (137), но как только у меня работает код, ясделает его парамитеризованным.

Есть идеи?

string corrAct;
            OleDbConnection dbConnection;
            dbConnection = new OleDbConnection(vDbString);
            string sqlString = "SELECT CorrDetails FROM Action WHERE ProbID=137";
            OleDbCommand command = new OleDbCommand(sqlString, dbConnection);

            using (dbConnection)
            {

            MessageBox.Show(sqlString);
            dbConnection.Open();
            corrAct = (String)command.ExecuteScalar();
            rtfCorrectiveAction.Text = Convert.ToString(corrAct);
            dbConnection.Close();
            }

Ответы [ 2 ]

3 голосов
/ 30 октября 2019

Action является зарезервированным словом в MS Access. Оберните это с []:

 string sqlString = "SELECT CorrDetails FROM [Action] WHERE ProbID=137";
1 голос
/ 30 октября 2019

Проблема в том, что вы не учли ключевые слова в SQL. https://docs.microsoft.com/en-us/sql/odbc/reference/appendixes/reserved-keywords?view=sql-server-ver15

Действие - это ключевое слово, поэтому его не следует использовать на самом деле в другом контексте, чтобы использовать их, поставьте [] вокруг них то, что становится

select stuff from [Action] where stuff=true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...