現有應用程序使用C#。在啓動過程中,應用程序會調用一個虛擬方法來更改數據庫(例如,新版本可能需要計算一個新字段或其他內容)。一個開放的OleDb連接被傳入該方法。如何通過OleDb確定MS Access字段大小
我需要更改字段寬度。 ALTER TABLE語句正常工作。但是如果字段已經是合適的大小,我想避免執行ALTER TABLE語句。有沒有辦法確定使用相同的OleDb連接的MS Access字段的大小?
現有應用程序使用C#。在啓動過程中,應用程序會調用一個虛擬方法來更改數據庫(例如,新版本可能需要計算一個新字段或其他內容)。一個開放的OleDb連接被傳入該方法。如何通過OleDb確定MS Access字段大小
我需要更改字段寬度。 ALTER TABLE語句正常工作。但是如果字段已經是合適的大小,我想避免執行ALTER TABLE語句。有沒有辦法確定使用相同的OleDb連接的MS Access字段的大小?
不知道我是否完全理解你的問題。
但是你可以查詢該表爲0行(SELECT 1 FROM myTable的WHERE 1 = 0)
而且你可以使用recordet的野外採集,通過名稱或索引 指的是外地和使用領域的財產,如大小,類型等等。
這有幫助嗎?
這是我想出的: 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
但是,如何知道它是否爲固定寬度NCHAR,可變寬度NVARCHAR或blob備忘?它有WITH COMPRESSION選項嗎?更好地使用OpenSchema方法(必要時+ ADOX)IMO:您可以獲得更多/細粒度的信息。 – onedaywhen 2008-10-13 07:38:20
這就是我想出了基於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"]);
你的意思是JET和無法訪問,因爲您只使用數據庫引擎,而不是數據庫應用程序的編程工具。 – 2008-10-13 21:06:39