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

DBConnect・DBClose・DBGet(System.Data.Odbc 名前空間) - (2008/02/15 (金) 09:13:01) の最新版との変更点

追加された行は緑色になります。

削除された行は赤色になります。

// 現在のページ名 *&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 If not DBConnect(DBType, Connection, strTarget, strDB, strUser, strPass) Then Response.Write("接続失敗") Response.End() End If ' クエリ作成 Dim selectQuery As String = "select * from hoge " ' データ取得 Dim DataTableReader As Data.DataTableReader = Nothing If Not DBGet(Connection, DataTableReader, selectQuery, False) Then Response.Write("データ取得失敗") Response.End() End If ' 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接続 ' ****************************************************** Function 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 Return False Else Return True End If On Error GoTo 0 End Function ' ****************************************************** ' 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)
// 現在のページ名 *&this_page()  **概要 ADO.NET(ODBC)によるDB操作関数群。 ※この項のサンプルは、私のローカルマシン(マシン名:YOKOSAN)の VisualStudio2005 に付属するSQLServer(ExpressEdition)に接続する場合の接続文字列をそのまま記載してある為、環境に応じて適宜変更すること。 ***参照 -[[.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 class_common 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 Cn As Data.Odbc.OdbcConnection = New Data.Odbc.OdbcConnection If Not DBConnect(DBType, Cn, strTarget, strDB, strUser, strPass) Then Response.Write("接続失敗") Response.End() End If ' クエリ作成 Dim selectQuery As String = "select * from hoge " ' データ取得 Dim Dtr As Data.DataTableReader = Nothing If Not DBGet(Cn, Dtr, selectQuery, False) Then Response.Write("データ取得失敗") Response.End() End If ' 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 (Dtr.Read) str_temp &= "<tr>" For i As Integer = 0 To Dtr.FieldCount - 1 str_temp &= "<td>" str_temp &= Dtr.Item(i) str_temp &= "</td>" Next str_temp &= "</tr>" Loop str_temp &= "</table>" ' データ表示 Response.Write(str_temp) ' 接続を閉じる Dtr.Close() DBClose(Cn) End Sub End Class } 以下、実行結果。 &img(262.jpg)

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー