2012-09-27 81 views
0

我想讀從表中使用噴SQL查詢的列名讀取列名。數據表保存在ms-access 2002-2003兼容模式下。我已經嘗試了幾個變體的查詢,但我似乎無法得到正確的語法。如何使用SQL

DatabaseConnection("SELECT Column_name" & " FROM " & tablename, "Read Recordset") 

DatabaseConnection("select column_name from information_schema.columns where table_name = tabDataHourly", "read Recordset") 

我有一個運行的數據庫連接的功能: 公共功能的DatabaseConnection(BYVAL查詢作爲字符串,BYVAL任務作爲字符串)作爲字符串 「對錯誤轉到ERR

cnnOLEDB = New OleDbConnection 
    cnnOLEDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DataDirectoryName & DatabaseFileName 
    cnnOLEDB.Open() 

    cmdOLEDB.Connection = cnnOLEDB 
    cmdOLEDB.CommandText = Query 

    Select Case Task 
     Case "Read Recordset" 
      rdrOLEDB = cmdOLEDB.ExecuteReader() 
      DatabaseConnection = "Read Recordset" 
     Case "Read Scalar" 
      DatabaseConnection = cmdOLEDB.ExecuteScalar 
     Case "Non-Query" 
      cmdOLEDB.ExecuteNonQuery() 
      DatabaseConnection = "Non-Query" 
    End Select 

    Exit Function 
Err: 
    MsgBox("Database connection error.") 
    DatabaseConnection = "Error" 


End Function 

任何幫助將不勝感激。

+1

如果你想要的是一列的名稱,你可以從rdrOLEDB.GetName OT得到(0),其中0是列(字段)編號,否則從連接中獲取模式。請注意,有些連接會爲Memo返回錯誤的類型。在這裏看到一個模式例如http://stackoverflow.com/questions/5065086/vb-net-how-can-i-check-if-a-primary-key-exists-in-an-access-db – Fionnuala

+0

我會像所有的列名,表中的列數將改變,因此它不能在硬接線。 – Pezzzz

+0

你可以從我運行= 0至rdrOLEDB.FieldCount-1我在下面加了註釋。 – Fionnuala

回答

0

上得到一個字段(列)名稱的一些注意事項:

 Case "Read Recordset" 
      rdrOLEDB = cmdOLEDB.ExecuteReader() 
      DatabaseConnection = "Read Recordset" 
      For i = 0 To rdrOLEDB.FieldCount - 1 
       Console.Write(rdrOLEDB.GetName(i)) 
      Next 
      Console.Read() 
0
select column_name,* from information_schema.columns 
where table_name = 'tabDataHourly' 
order by ordinal_position 
+0

對於這個我會用'ExecuteReader','ExecuteScalar','ExecuteNonQuery'或其他什麼東西? – Pezzzz

+0

我非常懷疑,有什麼辦法可以使這個MS Access的工作。 – Fionnuala