Ошибка «Отсутствует операнд после оператора« Баннона »» - что такое оператор «Баннона»? - PullRequest
15 голосов
/ 14 июля 2011

Работая над консольным приложением C #, у меня есть строка:

rowsFound = tempUsers.Select("EmailAddress = '" + userData[2].ToString() + "'");

rowsFound - это DataRow[], tempUsers - это DataTable, а userData - это SqlDataReader. У меня был неправильный индекс для userData (это был 1), и я получил эту ошибку:

System.Data.SyntaxErrorException was unhandled
   Message=Syntax error: Missing operand after 'Bannon' operator.
   Source=System.Data
StackTrace:
   at System.Data.ExpressionParser.Parse()
   at System.Data.DataExpression..ctor(DataTable table, String expression, Type type)
   at System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates)
   at System.Data.DataTable.Select(String filterExpression)

Когда я вставил правильный индекс (2), ошибка исчезла.

Есть идеи, что такое "оператор Баннона"?

Ответы [ 3 ]

25 голосов
/ 14 июля 2011

Этого парня, вероятно, звали O'Bannon (= userData[1]), что привело к следующей строке:

EmailAddress = 'O'Bannon'

Следующий вопрос Stackoverflow содержит руководство о том, как правильно экранировать данные, используемые в DataTable.Select:

Что касается одинарных кавычек, вам просто нужно продублировать их: ' -> ''.

8 голосов
/ 14 июля 2011

userData[1].ToString() было, вероятно, что-то вроде Bobby' Bannon

1 голос
/ 14 июля 2011

Пожалуйста, смотрите эту ссылку .Bannon происходит от либо UserData[2].ToString()

...