「DBConnect・DBClose・DBGet(System.Data.Odbc 名前空間)」の編集履歴(バックアップ)一覧に戻る

DBConnect・DBClose・DBGet(System.Data.Odbc 名前空間) - (2008/02/14 (木) 10:45:44) のソース

// 現在のページ名
*&this_page() 

**概要
ADO.NET(ODBC)によるDB操作関数群。

※この項のサンプルは、私のローカルマシン(マシン名:YOKOSAN)の「ASP.NET開発サーバ」(VisualStudio2005に組み込まれているwebサーバ)に接続する場合の接続文字列をそのまま記載してある為、環境に応じて適宜変更すること。

***参照
-[[.NET Framework クラス ライブラリ System.Data.ODBC 名前空間>>http://msdn2.microsoft.com/ja-jp/library/system.data.ODBC(VS.80).aspx]]

***参考
-[[SQLの窓 / イマドキの Multi Language / 各種データベース接続>>http://winofsql.jp/VA003334/dbaccess070722100102.htm]]
-[[SQLの窓 / Web アプリケーションクラス / ASP標準化 / dbMySQL.inc>>http://winofsql.jp/VA003334/framereq040915150459.htm]]

**前提条件
-[[新しいwebサイトの作成]]
-[[データベースへの接続の追加]]
-[[新しいテーブルの追加]]
-[[テーブルにデータを追加]]

**手順
default.aspx.vb を以下のように変更する。

#highlight(vb.net){
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        'Dim DBType As String = "DBの種類"                  
        'Dim strTarget As String = "サーバー名・インスタンス名"        
        'Dim strDB As String = "DB名"                     
        'Dim strUser As String = "ユーザ名"               
        'Dim strPass As String = "パスワード"              

        Dim DBType As String = "ASP.NET開発サーバ"
        Dim strTarget As String = "YOKOSAN\SQLEXPRESS"
        Dim strDB As String = "master"
        Dim strUser As String = ""
        Dim strPass As String = ""

        ' コネクション作成
        Dim Connection As Data.Odbc.OdbcConnection = New Data.Odbc.OdbcConnection
        DBConnect(DBType, Connection, strTarget, strDB, strUser, strPass)

        ' クエリ作成
        Dim selectQuery As String = "select * from hoge "

        ' データ取得
        Dim DataTableReader As Data.DataTableReader = Nothing
        DBGet(Connection, DataTableReader, selectQuery, False)

        ' DataRaeder.Readは、以下の機能を持つ。PHPにおけるfetch関数に近い。
        ' 1.一行読み込む
        ' 2.カーソルを進ませる(ADOにおけるRecordset.Movenextの代わり)
        ' 3.読み込めない場合はFalseを返す(ADOにおけるRecordset.EOFの代わり)

        ' 表示用バッファ
        Dim str_temp As String = New String("")

        str_temp &= "<table>"
        Do While (DataTableReader.Read)

            str_temp &= "<tr>"
            For i As Integer = 0 To DataTableReader.FieldCount - 1
                str_temp &= "<td>"
                str_temp &= DataTableReader.Item(i)
                str_temp &= "</td>"
            Next
            str_temp &= "</tr>"
        Loop
        str_temp &= "</table>"

        ' データ表示
        Response.Write(str_temp)

        ' 接続を閉じる
        DataTableReader.Close()
        DBClose(Connection)

    End Sub

    ' ******************************************************
    ' DB接続
    ' ******************************************************
    Sub DBConnect( _
    ByVal DBType As String, _
    ByRef Connection As Data.Odbc.OdbcConnection, _
    ByVal strTarget As String, _
    ByVal strDB As String, _
    ByVal strUser As String, _
    ByVal strPass As String _
    )
        Dim ConnectionString As String = ""

        If IsNothing(Connection) Then
            Connection = New Data.Odbc.OdbcConnection()
        End If

        Select Case DBType
            'Case "Excel"
            '    ConnectionString = _
            '     "Provider=Microsoft.Jet.odbc.4.0;" & _
            '     "Data Source=" & strTarget & ";" & _
            '     "Extended Properties=""Excel 8.0;IMEX=1;"""
            'Case "MDB"
            '    ConnectionString = _
            '     "Provider=Microsoft.Jet.odbc.4.0;" & _
            '     "Data Source=" & strTarget & ";"
            'Case "MySQL"
            '    ConnectionString = _
            '     "Provider=MSDASQL" & _
            '     ";DSN=" & strTarget & _
            '     ";DATABASE=" & strDB & _
            '     ";UID=" & strUser & _
            '     ";PWD=" & strPass & _
            '     ";"
            Case "SQLServer"
                ConnectionString = _
                 "Driver={SQL Server};" & _
                 "SERVER=" & strTarget & ";" & _
                 "DATABASE=" & strDB & ";" & _
                 "UID=" & strUser & ";" & _
                 "PWD=" & strPass & ";"
            Case "ASP.NET開発サーバ"
                ConnectionString = _
                 "Driver={SQL Server};" & _
                 "SERVER=" & strTarget & ";" & _
                 "DATABASE=" & strDB & ";" & _
                 "Integrated Security=SSPI;"

        End Select

        On Error Resume Next

        Connection.ConnectionString = ConnectionString
        Connection.Open()

        If Err.Number <> 0 Then
            Response.Write("DBConnect関数:")
            Response.Write(Err.Description)
            Response.End()
        End If

        On Error GoTo 0

    End Sub

    ' ******************************************************
    ' DB終了処理(接続を閉じる)
    ' ******************************************************
    Function DBClose( _
    ByRef Connection As Data.Odbc.OdbcConnection _
    )

        On Error Resume Next
        If Connection.State >= 1 Then
            Connection.Close()
        End If
        On Error GoTo 0

        Return True

    End Function

    ' ******************************************************
    ' DB読込み
    ' 
    ' 引数1: DBへの接続
    ' 引数2: テーブルリーダー(更新クエリ発行時は使用しませんが、ダミーで渡してください。)
    ' 引数3: SQL
    ' 引数4: 更新フラグ。
    '           True: SQL発行のみ行います。
    '           False: SQL発行後、テーブルリーダーを作成します。
    ' 戻り値: True(成功) , False(エラー発生)
    ' ******************************************************
    Function DBGet( _
    ByRef Connection As Data.Odbc.OdbcConnection, _
    ByRef DataTableReader As Data.DataTableReader, _
    ByVal SqlQuery As String, _
    ByVal bUpadateFlg As Boolean _
    )

        ' コマンド作成
        Dim command As Data.Odbc.OdbcCommand = New Data.Odbc.OdbcCommand
        command.CommandText = SqlQuery
        command.Connection = Connection

        ' テーブルアダプタ+データセット作成
        Dim DataAdapter As Data.Odbc.OdbcDataAdapter
        Dim DataSet As Data.DataSet = New Data.DataSet

        ' テーブルリーダ初期化
        DataTableReader = Nothing

        Try

            ' 更新フラグによって処理分岐
            If bUpadateFlg Then
                command.ExecuteNonQuery()
            Else
                DataAdapter = New Data.Odbc.OdbcDataAdapter(command)
                DataAdapter.Fill(DataSet)
                DataTableReader = DataSet.CreateDataReader()
            End If

            Return True

        Catch ex As Exception

            'Response.Write("DBGet関数:")
            'Response.Write(ex.Message)
            'Response.Write(":")
            'Response.Write(ex.Source)
            'Response.End()

            Return False

        End Try

    End Function

End Class
}

以下、実行結果。

&img(262.jpg)
記事メニュー
目安箱バナー