Ну, вы не указали, в чем заключается ошибка - но ваша первая проблема заключается в том, что вы вставляете данные непосредственно в оператор SQL. Не делайте этого. Вы приглашаете Атаки SQL-инъекции .
Используйте взамен параметризованный оператор SQL . После того, как вы это сделали, если у вас все еще есть проблемы, отредактируйте этот вопрос с новым кодом и скажите, что это за ошибка . Новый код, вероятно, будет уже более понятным, поскольку не будет большой конкатенации, легко скрывающей нечто вроде несоответствующей скобки.
РЕДАКТИРОВАТЬ: Как упоминалось в комментариях, Jet / ACE уязвим для меньшего количества типов атак SQL-инъекций, так как он не допускает DML. Для этого оператора INSERT на самом деле может существовать уязвимость no - но для SELECT с предложением WHERE, написанным аналогичным образом, пользовательский ввод может обойти некоторые средства защиты предложения WHERE. Я настоятельно рекомендую вам использовать параметризованные запросы как само собой разумеющееся:
- Они означают, что вам не нужно экранировать пользовательские данные
- Они хранят данные отдельно от кода
- Вам будет меньше о чем беспокоиться, если вы когда-нибудь перейдете из Jet / ACE (будь то перемещение этого конкретного кода или только вы лично начинаете работать с различными базами данных)
- Для других типов данных, таких как даты, вам не нужно выполнять какую-либо работу, чтобы перевести данные в форму, подходящую для базы данных
(Вам также не нужны все вызовы ToString
. Не только я ожидаю, что свойство с именем Text
уже является строкой, но и тот факт, что вы используете строку конкатенация означает, что преобразование строк в любом случае произойдет автоматически.)