1

尝试使用参数将数据插入 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 中手动插入值时,一切正常,因此它必须与参数属性有关。

4

2 回答 2

1

也许您需要在描述上添加大括号。[Description]

并更改您的参数,例如:

 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();

问候

于 2012-07-02T03:12:08.650 回答
1

参数名称只是对你的一个指导,例如,这个运行,注意所有参数都具有相同的名称!另请注意,保留字 Name 由方括号转义。

    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");

保留字

于 2012-07-02T09:15:11.997 回答