【发布时间】:2012-07-01 23:51:07
【问题描述】:
尝试使用参数将数据插入 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, @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 中手动插入值时,一切正常,因此它必须与参数属性有关。
【问题讨论】:
-
插入三个字符是没有问题的,但是参数必须按正确的顺序列出。您在示例中只显示了一个参数,其他参数是否按照您的命令文本中出现的顺序排列?
-
名称被很好地插入到数据库中,只有尝试插入到描述字段中才会出现异常
-
我运行了我在下面发布的示例代码,它对我有用。我不明白为什么你不能插入到描述中,除非其中一个参数有问题。
-
刚看到订单有点不对劲,没想到要按订单设置参数 谢谢!
-
参数名称无关紧要,在您拥有的场景中不与 MS Access 一起使用,您可以轻松使用 ?作为@VenID。重要的是顺序。
标签: c# ms-access-2007 oledb jet oledbcommand