Могу ли я программно определить (OLEDB), какая длина столбца превышена?
По какой-то причине я не могу открыть представление Design рассматриваемой таблицы MS Access; Я могу посмотреть на данные, но не на дизайн, а именно на длину столбцов.
Когда я пытаюсь вставить запись в упомянутую таблицу с этим кодом:
using (var conn = new OleDbConnection(connStr))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandText =
@"INSERT INTO tx_header (tx, site_no, xmlfile, collect_dttm, ccr_user, tx_memo, file_beg, file_end)
VALUES(@txval, @siteNum, @xmlfileName, Now(), @ccrUser, @TXMemo, @strfile_beg, @strfile_end)";
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@txval", tx);
cmd.Parameters.AddWithValue("@siteNum", site_no);
cmd.Parameters.AddWithValue("@xmlfileName", xmlfile);
cmd.Parameters.AddWithValue("@ccrUser", ccr_user);
cmd.Parameters.AddWithValue("@TXMemo", tx_memo);
cmd.Parameters.AddWithValue("@strfile_beg", file_beg);
cmd.Parameters.AddWithValue("@strfile_end", file_end);
conn.Open();
cmd.ExecuteNonQuery();
}
}
... Я получаю, "System.Data.OleDb.OleDbException не был обработан кодом пользователя HResult=-2147217833 Сообщение = Поле слишком маленькое, чтобы принять объем данных, который вы пытались добавить. Попробуйте вставить или вставить меньше данных. Источник = Ядро базы данных Microsoft Office Access"
Вместо того, чтобы угадывать, в каком столбце слишком много данных, было бы неплохо, если бы я мог программно определить, какой столбец является проблематичным. Могу я? Как?
2 ответа
Существует довольно подробное объяснение того, как запрашивать информацию о базовой схеме в MSDN, начиная с получения информации о схеме базы данных.
Отказ от ответственности: я никогда не пытался использовать это в базе данных Access.
После прочтения ваших комментариев выше мне становится ясно, что в вашем файле Access просто заблокированы дизайнерские представления. Обычно вы можете разблокировать их, просто удерживая Shift, дважды щелкнув по файлу и удерживая Shift, пока Access не запустится.
С этого момента у вас будет полный доступ к таблицам, запросам и тому подобному, а также к вашим спецификациям базы данных. Это будет гораздо лучше, чем пытаться получить к нему динамический доступ.