1

ODBCを介してVB.netでPostgreSQLデータベースを使用しています。
サンプルコード:

    Dim reader As OdbcDataReader
    Dim btCommand As OdbcCommand
    Dim mCmd As OdbcCommand
    Dim mCon as OdbcConnection

    mCon.ConnectionString = "Dsn=PostgreSQL30;database=mydb;server=127.0.0.1;port=myport;uid=myuid;pwd=mypass"
    mCon.Open()
    btCommand = New OdbcCommand("BEGIN TRANSACTION", mCon)
    mCmd = New OdbcCommand("SELECT dtbl_id, name, meas, price, qty, flag, kind FROM mytable WHERE dtbl_id >=" & brr.ToString & " ORDER BY dtbl_id LIMIT " & page.ToString, mCon)
    reader = mCmd.ExecuteReader()
    While (reader.Read())
        Dim n As Integer = DataGridView1.Rows.Add()
        With DataGridView1.Rows.Item(n)
            .Cells(0).Value = reader.GetValue(0).ToString()
            .Cells(1).Value = reader.GetValue(1).ToString()
            .Cells(2).Value = reader.GetValue(2).ToString()

    ... etc...

しかし、このシステム(odbc)でテーブルが存在するかどうかとVB変数に含まれる行数を確認する方法がわからないため、アドバイスをいただければ幸いです。

4

1 に答える 1

2

自分で問題を解決しました。

texistsは、テーブルが存在しない場合は-1で終了し、テーブルが存在して行が挿入されていない場合は0で終了するか、テーブルに存在する行の数を表す整数で終了します。

コード:

    Dim texists As Integer = -1        
    btCommand = New OdbcCommand("SELECT 1 FROM pg_tables WHERE tablename='mytable'", mCon)
    reader = btCommand.ExecuteReader()
    While (reader.Read())
        If reader.GetValue(0) = 1 Then texists = 0
    End While

    If texists >= 0 Then
        btCommand = New OdbcCommand("SELECT COUNT(*) from mytable", mCon)
        Try
            reader = btCommand.ExecuteReader()
            While (reader.Read())
                texists = Val(reader.GetValue(0).ToString())
            End While
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly)
        End Try
    End If

この後、texistsの値に従って、テーブルを作成したり、プログラムを終了したり、作業を続行したりできます。

于 2012-06-09T09:02:27.053 に答える