Вопрос

Существующее приложение находится на 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"]);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top