Pergunta

O aplicativo existente é em C #. Durante a inicialização do aplicativo chama um método virtual para fazer alterações no banco de dados (por exemplo, uma nova revisão pode precisar para calcular um novo campo ou algo assim). Uma conexão OleDb aberta é passado para o método.

Eu preciso mudar a largura do campo. A instrução ALTER TABLE está funcionando bem. Mas eu gostaria de evitar executar a instrução ALTER TABLE se o campo já é o tamanho apropriado. Existe uma maneira de determinar o tamanho de um campo MS Access usando a mesma conexão OleDb?

Foi útil?

Solução

Não tenho certeza se eu entendi sua pergunta completamente.
Mas você pode consultar a tabela para 0 linhas (SELECT 1 FROM myTable onde 1 = 0)

E você pode usar a coleção de campo de recordet, referem-se a esse campo por nome ou índice e propriedade uso do campo como tamanho, tipo, etc.

Isso ajuda?

Outras dicas

Aqui está o que eu vim com base na resposta do 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top