Странное исключение с 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();
С уважением