Comment déterminer la taille du champ MS Access via OleDb
Question
L’application existante est en C #. Au démarrage, l'application appelle une méthode virtuelle pour modifier la base de données (par exemple, une nouvelle révision peut nécessiter le calcul d'un nouveau champ ou autre). Une connexion OleDb ouverte est transmise à la méthode.
Je dois changer la largeur d'un champ. L'instruction ALTER TABLE fonctionne correctement. Mais je voudrais éviter d'exécuter l'instruction ALTER TABLE si le champ a déjà la taille appropriée. Existe-t-il un moyen de déterminer la taille d’un champ MS Access en utilisant la même connexion OleDb?
La solution
Je ne suis pas sûr de bien comprendre votre question.
Mais vous pouvez interroger la table pour 0 lignes (SELECT 1 FROM myTable WHERE 1 = 0)
Et vous pouvez utiliser la collection de champs de Recordet, reportez-vous à ce champ par son nom ou son index
et utiliser les propriétés du champ telles que la taille, le type, etc.
Est-ce que cela vous aide?
Autres conseils
Voici ce que je propose en me basant sur la réponse 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"]);