C# 插入ms access查询,Oledb对象获取无效查询的异常

C# 插入ms access查询,Oledb对象获取无效查询的异常,c#,ms-access,ado.net,oledb,C#,Ms Access,Ado.net,Oledb,我正在使用下面的代码,它给出了无效的Insert命令异常 row要添加到数据库的DataRow对象,conn是OleDBConnection对象 OleDbCommand cmd = new OleDbCommand(); cmd.Connection = conn; cmd.CommandText = `"Insert Into Appointments(ID,Body,End,Location,Start,Subject,Properties)"

我正在使用下面的代码,它给出了无效的Insert命令异常

row要添加到数据库的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();

请帮我一个忙。

“约会”表支持插入ID吗?如果ID列是标识值,则可能会导致问题。

“约会”表是否支持插入ID?如果ID列是标识值,则可能会导致问题。

我认为用于参数的数据类型不正确

例如,如果ID列是数字列,则不应使用
OleDbType.WChar
,而应使用
OleDbType.Integer

对于alfanumeric列,我也不会使用
OleDbType.WChar
,而是使用
OleDbType.VarChar


请参阅枚举。

我认为用于参数的数据类型不正确

例如,如果ID列是数字列,则不应使用
OleDbType.WChar
,而应使用
OleDbType.Integer

对于alfanumeric列,我也不会使用
OleDbType.WChar
,而是使用
OleDbType.VarChar

也可以查看枚举。

表的字段名中有一个(可能更多)

字段名结束。。。至少是这样

试一试

表的字段名中有一个(可能更多)

字段名结束。。。至少是这样

试一试


发布完整的错误消息{“INSERT INTO语句中的语法错误”。}发布完整的错误消息{“INSERT INTO语句中的语法错误”。}ID是主键&它是文本类型,但可能不会产生问题,因为它来自与数据库架构相同的数据集。ID是主键&它是文本类型,但可能不会产生问题,因为它来自与数据库架构相同的数据集。
cmd.CommandText = `"Insert Into Appointments(ID,Body,[End],Location,Start,Subject,Properties)"
                                                + "Values(@ID,@Body,@End,@Location,@Start,@Subject,@Properties)";