0

Jet SQL クエリを使用してテーブルから列名を読み取ろうとしています。データ テーブルは、2002-2003 互換モードで ms-access に保持されます。クエリのバリエーションをいくつか試しましたが、正しい構文を取得できないようです。

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

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

データベース接続を実行する関数があります: Public Function DatabaseConnection(ByVal Query As String, ByVal Task As String) As String 'On Error GoTo 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

どんな助けでも大歓迎です。

4

2 に答える 2

0
select column_name,* from information_schema.columns
where table_name = 'tabDataHourly'
order by ordinal_position
于 2012-09-27T13:40:04.857 に答える
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()
于 2012-09-27T14:08:28.713 に答える