我想通過打開OleDbConnection來讀取Access數據庫中的表「Streets」的列名稱。我打電話GetOleDbSchemaTable,但我似乎無法弄清楚如何得到我的專欄。使用GetOleDbSchemaTable獲取名爲「街道」的表的列
如果可能,我想使用.NET 3.5框架。
我想通過打開OleDbConnection來讀取Access數據庫中的表「Streets」的列名稱。我打電話GetOleDbSchemaTable,但我似乎無法弄清楚如何得到我的專欄。使用GetOleDbSchemaTable獲取名爲「街道」的表的列
如果可能,我想使用.NET 3.5框架。
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
DataTable tableColumns = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, "Streets", null }));
foreach (DataRow row in tableColumns.Rows)
{
var columnNameColumn = row["COLUMN_NAME"];
var dateTypeColumn = row["DATA_TYPE"];
var ordinalPositionColumn = row["ORDINAL_POSITION"];
...
}
}
這個工作對我來說,把表街道的名字列在名單
OleDbCommand mdbCommand = new OleDbCommand("SELECT * FROM Streets", mdbConnection);
OleDbDataReader myReader = mdbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable schemaTable = myReader.GetSchemaTable();
List<String> columnNameList = new List<string>();
foreach (DataRow myField in schemaTable.Rows)
{
foreach (DataColumn myProperty in schemaTable.Columns)
{
if (myProperty.ColumnName == "ColumnName") columnNameList.Add(myField[myProperty].ToString());
}
}
是的,但你是打開一個可能需要時間執行的查詢(比元數據查詢更長),並且您可能無法獲取可從GetOleDbSchemaTable獲取的所有信息 – 2010-10-13 15:08:43
@vc 74這並不爲我工作,我得到「數據表沒有IEnum的公共DEF」所以甚至不能使用foreach,然後當我把它放在一個for {}時,它說COLUMN_NAME不是TABLE的成員「Tables」 – 0x4f3759df 2010-10-13 14:49:28
對不起,我忘記了.Rows(源代碼更新) – 2010-10-13 15:06:39