Pregunta

La aplicación existente está en C #. Durante el inicio, la aplicación llama a un método virtual para realizar cambios en la base de datos (por ejemplo, una nueva revisión puede necesitar calcular un nuevo campo o algo). Se pasa una conexión abierta de OleDb al método.

Necesito cambiar el ancho de un campo. La instrucción ALTER TABLE funciona bien. Pero me gustaría evitar ejecutar la instrucción ALTER TABLE si el campo ya tiene el tamaño adecuado. ¿Hay alguna manera de determinar el tamaño de un campo de MS Access usando la misma conexión OleDb?

¿Fue útil?

Solución

No estoy seguro si entiendo tu pregunta por completo.
Pero puede consultar en la tabla 0 filas (SELECCIONE 1 DE myTable WHERE 1 = 0)

Y podría usar la colección de campos de recordet, consulte ese campo por nombre o índice y use la propiedad del campo como tamaño, tipo, etc.

¿Eso ayuda?

Otros consejos

Esto es lo que se me ocurrió en base a la respuesta de shahkalpesh:

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"]);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top