Вставить запрос для ms-доступа с объектом Oledb, получая исключение недопустимого запроса - PullRequest
0 голосов
/ 15 сентября 2011

Я использую следующий код и выдаю недопустимое исключение команды Вставить.

строка объекта DataRow, который будет добавлен в базу данных, conn - это объект OleDBConnection.

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = `"Insert Into Appointments(ID,Body,End,Location,Start,Subject,Properties)"
                                                + "Values(@ID,@Body,@End,@Location,@Start,@Subject,@Properties)";


cmd.Parameters.Add("@ID", OleDbType.WChar).Value = row[0].ToString();
cmd.Parameters.Add("@Body", OleDbType.WChar).Value = row[1].ToString();
cmd.Parameters.Add("@End", OleDbType.Date).Value =  Convert.ToDateTime(row[2]).Date.ToLongDateString();
cmd.Parameters.Add("@Location", OleDbType.WChar).Value = row[3].ToString();
cmd.Parameters.Add("@Start", OleDbType.Date).Value = Convert.ToDateTime(row[4]).Date.ToLongDateString();
cmd.Parameters.Add("@Subject", OleDbType.WChar).Value = row[5].ToString();
cmd.Parameters.Add("@Properties", OleDbType.WChar).Value = row[6].ToString();


                conn.Open();                    
                cmd.ExecuteNonQuery();          //At this line exception is generating
                conn.Close();

Пожалуйста, помогите мне в этом.

Ответы [ 3 ]

3 голосов
/ 15 сентября 2011

У вас есть одно (возможно больше) зарезервированное слово в именах полей вашей таблицы.

Имя поля Конец ... как минимум.

Попробуйте

cmd.CommandText = `"Insert Into Appointments(ID,Body,[End],Location,Start,Subject,Properties)"
                                                + "Values(@ID,@Body,@End,@Location,@Start,@Subject,@Properties)";
0 голосов
/ 15 сентября 2011

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

Если ваш столбец идентификатора представляет собой числовой столбец, вы не должны использовать OleDbType.WChar, но, например, OleDbType.Integer

Для буквенно-цифровых столбцов я бы тоже не использовал OleDbType.WChar, но OleDbtype.VarChar.

См. Также перечисление OleDbType .

0 голосов
/ 15 сентября 2011

Поддерживает ли таблица "Встречи" вставку идентификатора?Если столбец идентификатора является значением идентификатора, это может вызвать проблемы.

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