C# OLEDB参数插入异常
尝试使用参数将数据插入Access数据库时出现奇怪错误。我遇到的问题是:-C# OLEDB参数插入异常,c#,ms-access-2007,oledb,jet,oledbcommand,C#,Ms Access 2007,Oledb,Jet,Oledbcommand,尝试使用参数将数据插入Access数据库时出现奇怪错误。我遇到的问题是:- thisCommand.CommandText = "INSERT INTO Events (Venue_ID, Date_Start, Date_End, Time_Start, Time_End, Name, Description, Event_Type, Buy_Tickets_URL) VALUES (@VenID, @DStart, @DEnd, @evTime, @evTim
thisCommand.CommandText = "INSERT INTO Events (Venue_ID, Date_Start, Date_End, Time_Start, Time_End, Name, Description, Event_Type, Buy_Tickets_URL) VALUES (@VenID, @DStart, @DEnd, @evTime, @evTime, @Name, @Des, @EvType, @SysUrl);";
//Other Parameters already inserted here
string desc = GetDesc(rec.EvName);
thisCommand.Parameters.AddWithValue("@Des", desc);
thisCommand.ExecuteNonQuery();
其他参数都不会导致问题,但在尝试向描述字段插入数据时,我收到一个数据库异常,表示该字段太小,无法接受数据量。问题是,我的程序在抛出错误时只尝试插入3个字符,而描述字段是一个备注,因此最多可以容纳65000多个字符。在CommandText中手动插入值时,一切正常,因此必须与参数属性有关 也许您需要在描述中添加大括号<代码>[说明] 并更改参数,例如:
thisCommand.CommandText = "INSERT INTO Events (Venue_ID, Date_Start, Date_End, Time_Start, Time_End, Name, [Description], Event_Type, Buy_Tickets_URL) VALUES (@VenID, @DStart, @DEnd, @evTime, @evTime, @Name, @Des, @EvType, @SysUrl);
//Other Parameters already inserted here
string desc = GetDesc(rec.EvName);
// thisCommand.Parameters.AddWithValue("@Des", desc);
thisCommand.Parameters.Add("@Des", OleDbType.VarChar, 6000).Value = desc;
thisCommand.ExecuteNonQuery();
关于参数名称仅是您的指南,例如,在运行时,请注意,所有参数都具有相同的名称!还请注意,保留字名称由方括号转义
thisCommand.CommandText = "INSERT INTO Events (Venue_ID, Date_Start, " +
"Date_End, [Name], Description, Event_Type, Buy_Tickets_URL) " +
"VALUES (@VenID, @DStart, @DEnd, @Name, @Des, @EvType, @SysUrl);";
thisCommand.Parameters.AddWithValue("@Des", 1);
thisCommand.Parameters.AddWithValue("@Des", DateTime.Now.Date);
thisCommand.Parameters.AddWithValue("@Des", DateTime.Now.Date);
thisCommand.Parameters.AddWithValue("@Des", "abc");
thisCommand.Parameters.AddWithValue("@Des", "abc");
thisCommand.Parameters.AddWithValue("@Des", 1);
thisCommand.Parameters.AddWithValue("@Des", "abc");
保留字