Вмъкване на заявка за ms-access с Oledb обект, получаващ изключение за невалидна заявка

Използвам следния код и той дава изключение на невалидната команда Insert.

ред обектът 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();

Моля, помогнете ми в това.


person VIKRAM    schedule 15.09.2011    source източник
comment
Публикувайте пълното съобщение за грешка   -  person Sandeep G B    schedule 15.09.2011
comment
{Синтактична грешка в израза INSERT INTO.}   -  person VIKRAM    schedule 15.09.2011


Отговори (3)


Имате една (вероятно повече) запазена дума в имената на полетата на вашата таблица.

Името на полето Край ... най-малкото.

Опитвам

cmd.CommandText = `"Insert Into Appointments(ID,Body,[End],Location,Start,Subject,Properties)"
                                                + "Values(@ID,@Body,@End,@Location,@Start,@Subject,@Properties)";
person hawbsl    schedule 15.09.2011

Таблицата „Срещи“ поддържа ли вмъкване на ID? Ако колоната ID е стойността на идентичността, това може да причини проблем.

person denolk    schedule 15.09.2011
comment
ID е първичен ключ и е от тип Text, но може да не създаде проблем, тъй като е от набор от данни със същата схема като базата данни. - person VIKRAM; 15.09.2011

Мисля, че типовете данни, които използвате за вашите параметри, са неправилни.

Ако вашата колона с ИД е цифрова колона, не трябва да използвате OleDbType.WChar, а OleDbType.Integer, например

За буквено-цифрови колони също не бих използвал OleDbType.WChar, а OleDbtype.VarChar.

Вижте и изброяването OleDbType.

person Frederik Gheysels    schedule 15.09.2011