powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ошибка в SQL запросе
7 сообщений из 7, страница 1 из 1
Ошибка в SQL запросе
    #33321890
Sovo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю следующее:
private IDbConnection _connection;
......
//Initialize _connection object creating new OleDbConnection object.
IDbCommand addCommand=this._connection.CreateCommand();
addCommand.Connection=this._connection;

string commandText=string.Format(CultureInfo.InvariantCulture, "INSERT INTO Tasks (Assembly, TaskType, User, Password, MaxExecutionTime, Frequency, Interval, StartDate, ByMonthRule, ByMonthDayRule, ByWeekDayRule, Id, Params) VALUES('{0}', '{1}', '{2}', '{3}', {4}, '{5}', {6}, '{7}', '{8}','{9}','{10}','{11}','{12}')",view["Assembly"], view["TaskType"], view["User"], view["Password"], view["MaxExecutionTime"], view["Frequency"], view["Interval"], view["StartDate"], view["ByMonthRule"],view["ByMonthDayRule"],view["ByWeekDayRule"],id.ToString(),view["Parameters"]);
//(Детали реализации я пропустил)
addCommand.CommandText=commandText;
addCommand.ExecuteNonQuery();

Так вот. Результатом форматирования строки явлеяется такой SQL запрос:

INSERT INTO Tasks (Assembly, TaskType, User, Password, MaxExecutionTime, Frequency, Interval, StartDate, ByMonthRule, ByMonthDayRule, ByWeekDayRule, Id, Params) VALUES('Assembly', 'Task Type', 'Asv', '12345', 1000, 'Monthly', 3, '10/13/2005 13:40:29', '4;6','3;10','Saturday(1);Friday','ac16dd79-84b4-4429-8cff-07997911978c','p1=v1;p2=v2')

Типы данных колонок:
MaxExecutionTime - integer
Interval - integer
StartDate - date\time
Все остальное - string

Работаю с Access базой.

ExecuteNonQuery метод кидает исключение - Synax Error in INSERT INTO statement.

Но: При запуске того же самого запроса в MS Access - собственно в той базе с которой я работаю - все работает отлично. Новая запись вставляется.

Не подскажете в чем тут может быть дело? Хотя бы идеи как получить подробную информацию о синтаксической ошибке в запросе?
...
Рейтинг: 0 / 0
Ошибка в SQL запросе
    #33322193
Akter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sovostring commandText=string.Format(CultureInfo.InvariantCulture, "INSERT INTO Tasks (Assembly, TaskType, User, Password, MaxExecutionTime, Frequency, Interval, StartDate, ByMonthRule, ByMonthDayRule, ByWeekDayRule, Id, Params) VALUES('{0}', '{1}', '{2}', '{3}', {4}, '{5}', {6}, '{7}', '{8}','{9}','{10}','{11}','{12}')",view["Assembly"], view["TaskType"], view["User"], view["Password"], view["MaxExecutionTime"], view["Frequency"], view["Interval"], view["StartDate"], view["ByMonthRule"],view["ByMonthDayRule"],view["ByWeekDayRule"],id.ToString(),view["Parameters"]);

Мне кажется в запросе дело, если я правильно посчитал MaxExecutionTime это {5} - он в кавычках, а это int, там кавычек быть не должно. С Interval , кстати та же история. Не забудьте поставить кавычки в {6}
...
Рейтинг: 0 / 0
Ошибка в SQL запросе
    #33322274
Sovo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неее, нумерация идет с 0
так что MaxExecutionTime это {4}
Interval это {6}
Обратите внимание за результат форматирования - с кавычками все правильно. Уж на такой бы вещи я не прокололся.
...
Рейтинг: 0 / 0
Ошибка в SQL запросе
    #33322445
Akter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может тогда в формате даты проблема, она точно так пишется? Попробуйте без нее, если получится значит дело в ней.
А не стоит ли писать после значений типа view["ByMonthDayRule"] .ToString()? Если честно, я бы немного по другому "собирал" commandText (в смысле форматирования), чтобы видно было что к чему, а то так немного запутано...
...
Рейтинг: 0 / 0
Ошибка в SQL запросе
    #33322496
Sovo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C датой проблем нет.
Еще раз повторяю - в Access запрос проходит без проблем. Дату нужно писать в кавычках. Я потому и вопрос в форум ADO.NET послал, что судя по всему дело именно в нем.
...
Рейтинг: 0 / 0
Ошибка в SQL запросе
    #33322916
Sovo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно все это. Заработало нормально после того, как я изменил имена колонок:
User на TaskUserName
Password на TaskUserPassword
Frequency на RecurrenceFrequency
Interval на RecurrenceInterval

Явно тут действуют зарезервированные имена колонок..
Тогда почему же все работает в Access
Все равно непонятно.
...
Рейтинг: 0 / 0
Ошибка в SQL запросе
    #33322975
Sovo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да, дествительно:

В этом списке есть Parameters, User, Password и Interval

Frequency только нету:)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ошибка в SQL запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]