2010-10-13 15 views

回答

10
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"]; 
     ... 
    } 
} 
+0

@vc 74這並不爲我工作,我得到「數據表沒有IEnum的公共DEF」所以甚至不能使用foreach,然後當我把它放在一個for {}時,它說COLUMN_NAME不是TABLE的成員「Tables」 – 0x4f3759df 2010-10-13 14:49:28

+0

對不起,我忘記了.Rows(源代碼更新) – 2010-10-13 15:06:39

0

這個工作對我來說,把表街道的名字列在名單

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()); 
} 

} 
+1

是的,但你是打開一個可能需要時間執行的查詢(比元數據查詢更長),並且您可能無法獲取可從GetOleDbSchemaTable獲取的所有信息 – 2010-10-13 15:08:43

相關問題