Oracle 读INI文件连接数据库
Option Strict Off
Option Explicit On
Imports System.ComponentModel
Imports System.Web
Imports System.Configuration
Imports System.Net
Imports System.Xml
Imports System.Data
Imports System.IO.File
Imports System.Text
Imports System.Runtime.InteropServices
Imports System
Imports Oracle.DataAccess.Client
Imports Oracle.DataAccess.Types
Module Access
Public Declare Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringA" ( _
<MarshalAs(UnmanagedType.LPStr)> ByVal lpApplicationName As String, _
<MarshalAs(UnmanagedType.LPStr)> ByVal lpKeyName As String, _
<MarshalAs(UnmanagedType.LPStr)> ByVal lpDefault As String, _
<MarshalAs(UnmanagedType.LPStr)> ByVal lpReturnedString As StringBuilder, _
ByVal nSize As UInt32, _
<MarshalAs(UnmanagedType.LPStr)> ByVal lpFileName As String) As UInt32
Public DbConn As New OracleConnection
Public DbTxn As OracleTransaction
Public Const INI_SRC As String = "HOSTNAME"
Public Const INI_USPSR As String = "USERNAME"
Public TransactionFlg As Boolean
Public OraCmd As New OracleCommand
Public Const STR_MAX_SIZE As Integer = 128 'DLL戻り値のサイズの定数
Public Declare Function ShowWindow Lib "USER32.DLL" (ByVal hWnd As IntPtr, ByVal nCmdShow As Integer) As Integer
Public Declare Function SetForegroundWindow Lib "USER32.DLL" (ByVal hWnd As IntPtr) As Boolean
Public Const INI_FILENM As String = "STDPRG.INI" 'INIファイル名
Public Const SW_NORMAL As Integer = 1
Private Function ConnectOraDatabase() As Boolean
Dim APP_INI As String
APP_INI = System.Reflection.Assembly.GetExecutingAssembly.Location()
APP_INI = Mid(APP_INI, 1, InStrRev(APP_INI, "\")) & INI_FILENM
'APP_INI = My.Computer.FileSystem.CurrentDirectory & "\" & INI_FILENM
Dim dsrc As String = GetIniData(APP_INI, "ORACLE", INI_SRC)
Dim uspsid As String = GetIniData(APP_INI, "ORACLE", INI_USPSR)
Dim usid As String
Dim pswd As String
usid = Mid(uspsid, 1, InStrRev(uspsid, "/") - 1)
pswd = Mid(uspsid, InStrRev(uspsid, "/") + 1, Len(uspsid))
If pswd = "*" Then pswd = usid
If pswd = "#" Then pswd = usid & "user"
DbConn.ConnectionString = "user id=" & usid & ";password=" & pswd & ";data source=" & dsrc
OraCmd.Connection = DbConn
End Function
'指定のiniファイル情報からDBをOPENする
Public Sub InitDb()
Dim APP_INI As String
APP_INI = System.Reflection.Assembly.GetExecutingAssembly.Location()
APP_INI = Mid(APP_INI, 1, InStrRev(APP_INI, "\")) & INI_FILENM
Dim dsrc As String = GetIniData(APP_INI, "ORACLE", INI_SRC)
Dim uspsid As String = GetIniData(APP_INI, "ORACLE", INI_USPSR)
Dim usid As String
Dim pswd As String
usid = Mid(uspsid, 1, InStrRev(uspsid, "/") - 1)
pswd = Mid(uspsid, InStrRev(uspsid, "/") + 1, Len(uspsid))
If pswd = "*" Then pswd = usid
If pswd = "#" Then pswd = usid & "user"
DbConn.ConnectionString = "user id=" & usid & ";password=" & pswd & ";data source=" & dsrc
DbConn.Open()
OraCmd.Connection = DbConn
End Sub
'DBをCLOSEする。
Public Sub CloseDb()
DbConn.Close()
End Sub
Public Function GetData(ByVal aSql As String, ByVal aTab As String, ByRef aDs As DataSet) As Boolean
Dim aRet As Boolean
If DbConn.State = ConnectionState.Closed Then
ConnectOraDatabase()
End If
OraCmd.CommandText = aSql
Dim OraDa As New OracleDataAdapter(OraCmd)
If aDs.Tables.Contains(aTab) Then aDs.Tables(aTab).Clear()
OraDa.Fill(aDs, aTab)
'データ存在チェック
If aDs.Tables(aTab).Rows.Count = 0 Then
aRet = False
Else
aRet = True
End If
If TransactionFlg = False Then
CloseDb()
End If
Return aRet
End Function
Public Function ExecuteSql(ByVal aSql As String) As Boolean
If DbConn.State = ConnectionState.Closed Then
InitDb()
End If
OraCmd.CommandText = aSql
OraCmd.ExecuteNonQuery()
If TransactionFlg = False Then
CloseDb()
End If
End Function
'INIファイルに登録されているデータを取得する
Public Function GetIniData(ByVal AppIniFile As String, ByVal IpApplicationName As String, ByVal IpKeyName As String) As String
Dim DLL_MAX_SIZE As Integer = 128 'DLL戻り値のサイズの定数
Dim X As UInt32
Dim szBuf As System.Text.StringBuilder
szBuf = New System.Text.StringBuilder(DLL_MAX_SIZE) '128バイトの領域を確保する
X = GetPrivateProfileString(IpApplicationName, IpKeyName, "", szBuf, Convert.ToUInt32(DLL_MAX_SIZE), AppIniFile)
GetIniData = Left$(szBuf.ToString, X.ToString)
End Function
'2重起動のチェック
Public Function CheckExistProcess(ByVal processName As String) As Boolean
Dim aRet As Boolean = False
Dim arrProcess As System.Diagnostics.Process()
arrProcess = System.Diagnostics.Process.GetProcessesByName(processName)
If (arrProcess.Length > 1) Then
aRet = True
End If
If (aRet) Then
Try
For Each hProcess As System.Diagnostics.Process In arrProcess
ShowWindow(hProcess.MainWindowHandle, SW_NORMAL)
SetForegroundWindow(hProcess.MainWindowHandle)
Exit For
Next
Catch ex As Exception
End Try
End If
Return aRet
End Function
End Module
浙公网安备 33010602011771号