「共通関数の定義ファイルを追加」の編集履歴(バックアップ)一覧に戻る

共通関数の定義ファイルを追加 - (2008/02/20 (水) 15:15:40) のソース

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

**概要
共通関数を定義したクラスファイルを追加する。
クラスファイルには、データベースへの接続等、比較的どのシステムでも共通するであろう処理を記述してある。

**前提条件
-[[新しいwebサイトの作成]]
-[[BASP21のインストール]]
-[[.NET から COM(例:BASP21) を使う]]

**手順
[ソリューションエクスプローラ] -> 「新しい項目の追加」

&img(273.jpg)

「クラス」を選択 -> 「追加」

&img(274.jpg)

class1.vb を以下のように変更。

#highlight(vb.net){
Imports Microsoft.VisualBasic
Imports BASP21Lib

Public Class class_common
    Inherits System.Web.UI.Page

    ' ******************************************************
    ' DB接続
    ' ******************************************************
    Public Shared Function DBConnect( _
    ByVal DBType As String, _
    ByRef Cn 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(Cn) Then
            Cn = 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

        Cn.ConnectionString = ConnectionString
        Cn.Open()

        If Err.Number <> 0 Then
            Return False
        Else
            Return True
        End If

        On Error GoTo 0

    End Function

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

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

        Return True

    End Function

    ' ******************************************************
    ' DB読込み
    ' 
    ' 引数1: DBへの接続
    ' 引数2: テーブルリーダー(更新クエリ発行時は使用しませんが、ダミーで渡してください。)
    ' 引数3: SQL
    ' 引数4: 更新フラグ。
    '           True: SQL発行のみ行います。
    '           False: SQL発行後、テーブルリーダーを作成します。
    ' 戻り値: True(成功) , False(エラー発生)
    ' ******************************************************
    Public Shared Function DBGet( _
    ByRef Cn As Data.Odbc.OdbcConnection, _
    ByRef Dtr 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 = Cn

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

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

        Try

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

            Return True

        Catch ex As Exception

            Return False

        End Try

    End Function

    ' ******************************************************
    ' web.config中の、「AppSetting」で定義した文字列を取得する。 
    ' ******************************************************
    Public Shared Function getAppSettingString(ByVal str_temp As String)

        Return System.Configuration.ConfigurationManager.AppSettings(str_temp)

    End Function

    Public Shared Function GetProfileString(ByVal strPath, ByVal strSection, ByVal strEntry)

        On Error Resume Next

        Dim bFound As Boolean
        Dim fileno As Integer
        Dim str_return As String = ""
        Dim str_Line As String
        Dim array_work As Array

        fileno = FreeFile()

        FileOpen(fileno, strPath, OpenMode.Input)

        bFound = False

        While Not EOF(fileno)
            str_Line = LineInput(fileno)

            If bFound Then
                If Left(str_Line, 1) = "[" Then
                    Exit While
                End If

                str_Line = LTrim(str_Line)
                If Left(str_Line, Len(strEntry)) = strEntry Then
                    array_work = Split(str_Line, "=")
                    If Trim(array_work(0)) = strEntry Then
                        If UBound(array_work) = 1 Then
                            str_return = Trim(array_work(1))
                            Exit While
                        End If
                    End If
                End If
            End If

            If str_Line = "[" & strSection & "]" Then
                bFound = True
            End If

        End While

        FileClose(fileno)

        On Error GoTo 0

        Return str_return

    End Function

    ' **********************************************************
    ' メール送信
    ' User が設定されていいると、認証を行う
    ' **********************************************************
    Public Shared Function SendMail( _
        ByVal strTo As String _
        , ByVal strFrom As String _
        , ByVal strSubject As String _
        , ByVal strBody As String _
        , ByVal strFile As String _
    )

        Dim basp As Basp21 = New Basp21()

        ' ログファイル用パス指定。
        Dim str_logFilePath As String = HttpContext.Current.Server.MapPath("./mail.log")

        ' SMTPサーバ設定
        Dim strServer As String = "メールサーバ"
        Dim strPort As String = "ポート番号"
        Dim strUser As String = "ユーザ名"
        Dim strPass As String = "パスワード"
        Dim strAuth As String = "認証タイプ"

        If strPort <> "" Then
            strServer &= ":" & strPort
        End If

        If strUser <> "" Then
            strFrom &= vbTab & strUser & ":" & strPass
        End If

        If strAuth <> "" Then
            strFrom &= vbTab & strAuth
        End If


        Dim ret As String

        ret = basp.SendMail( _
         strServer, _
         strTo, _
         strFrom, _
         strSubject, _
         strBody, _
         strFile _
        )

        Dim fileno As Integer

        fileno = FreeFile()

        Try

            ' ファイルに書き込み
            FileOpen(fileno, str_logFilePath, OpenMode.Append)

            WriteLine(fileno, "------------------------------")

            If ret <> "" Then
                PrintLine(fileno, "エラーが発生しています")
                WriteLine(fileno, "error : " & ret)
                WriteLine(fileno, "Server : " & strServer)
            Else
                WriteLine(fileno, "メールは正しく送信されました")

            End If

            WriteLine(fileno, "MailTo : " & strTo)
            WriteLine(fileno, "MailFrom : " & strFrom)
            WriteLine(fileno, "MailSubject : " & strSubject)
            WriteLine(fileno, "MailBody : " & strBody)
            WriteLine(fileno, "MailFile : " & strFile)

        Finally

            FileClose(fileno)

        End Try

        Return ret

    End Function


End Class
}

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

#highlight(vb.net){
Partial Class _Default
    Inherits class_common

End Class
}
記事メニュー
ウィキ募集バナー