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?

È stato utile?

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"]);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top