2008-10-11 65 views
1

現有應用程序使用C#。在啓動過程中,應用程序會調用一個虛擬方法來更改數據庫(例如,新版本可能需要計算一個新字段或其他內容)。一個開放的OleDb連接被傳入該方法。如何通過OleDb確定MS Access字段大小

我需要更改字段寬度。 ALTER TABLE語句正常工作。但是如果字段已經是合適的大小,我想避免執行ALTER TABLE語句。有沒有辦法確定使用相同的OleDb連接的MS Access字段的大小?

+0

你的意思是JET和無法訪問,因爲您只使用數據庫引擎,而不是數據庫應用程序的編程工具。 – 2008-10-13 21:06:39

回答

0

不知道我是否完全理解你的問題。
但是你可以查詢該表爲0行(SELECT 1 FROM myTable的WHERE 1 = 0)

而且你可以使用recordet的野外採集,通過名稱或索引 指的是外地和使用領域的財產,如大小,類型等等。

這有幫助嗎?

+0

這是我想出的: 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」]); – Andy 2008-10-12 03:09:11

+0

但是,如何知道它是否爲固定寬度NCHAR,可變寬度NVARCHAR或blob備忘?它有WITH COMPRESSION選項嗎?更好地使用OpenSchema方法(必要時+ ADOX)IMO:您可以獲得更多/細粒度的信息。 – onedaywhen 2008-10-13 07:38:20

1

這就是我想出了基於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"]);