Как определить размер поля MS Access через OleDb
Вопрос
Существующее приложение находится на C #. Во время запуска приложение вызывает виртуальный метод для внесения изменений в базу данных (например, новая ревизия может потребоваться для вычисления нового поля или чего-то еще). Открытое соединение OleDb передается в метод. Р>
Мне нужно изменить ширину поля. Оператор ALTER TABLE работает нормально. Но я бы хотел избежать выполнения инструкции ALTER TABLE, если поле уже имеет соответствующий размер. Есть ли способ определить размер поля MS Access, используя то же соединение OleDb?
Решение
Не уверен, полностью ли я понимаю ваш вопрос.
Но вы можете запросить таблицу для 0 строк (ВЫБЕРИТЕ 1 ИЗ myTable WHERE 1 = 0)
И вы можете использовать коллекцию полей рекордера, ссылаться на это поле по имени или индексу
и использовать свойства поля, такие как размер, тип и т. д.
Это помогает?
Другие советы
Вот что я придумал, основываясь на ответе шахкальпеша:
var command = new OleDbCommand("SELECT FIELD FROM TABLE", connection);
var reader = command.ExecuteReader(CommandBehavior.SchemaOnly);
var schema = reader.GetSchemaTable();
var size = Convert.ToInt32(table.Rows[0]["ColumnSize"]);