「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)
表示オプション
横に並べて表示:
変化行の前後のみ表示: