Come determinare la dimensione del campo di MS Access tramite OleDb
Domanda
L'applicazione esistente è in C #. Durante l'avvio l'applicazione chiama un metodo virtuale per apportare modifiche al database (ad esempio potrebbe essere necessaria una nuova revisione per calcolare un nuovo campo o qualcosa del genere). Nel metodo viene passata una connessione OleDb aperta.
Devo cambiare la larghezza di un campo. L'istruzione ALTER TABLE funziona correttamente. Ma vorrei evitare di eseguire l'istruzione ALTER TABLE se il campo ha già le dimensioni appropriate. Esiste un modo per determinare la dimensione di un campo MS Access utilizzando la stessa connessione OleDb?
Soluzione
Non sono sicuro di aver compreso completamente la tua domanda.
Ma potresti interrogare la tabella per 0 righe (SELEZIONA 1 DA myTable DOVE 1 = 0)
E puoi usare la raccolta di campi del recordet, fai riferimento a quel campo per nome o indice
e usa la proprietà del campo come dimensione, tipo ecc.
Aiuta?
Altri suggerimenti
Ecco cosa mi è venuta in base alla risposta di 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"]);