Странное исключение с OLEDB Parameter Insert

Получение странной ошибки при попытке вставить данные в базу данных 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 все работает нормально, поэтому оно должно быть как-то связано со свойствами параметра.

2 ответа

Решение

Имена параметров - это только руководство для вас, например, при этом запустите, обратите внимание, что все параметры имеют одинаковое имя! Также обратите внимание, что зарезервированное слово 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");

Зарезервированные слова

Может быть, вам нужно добавить скобки в описание. [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();

С уважением

Другие вопросы по тегам