'参照名:Oracle.DataAccess
'種類:.NET
'バージョン:2.112.2.0
'ローカルにコピーする:True
'パス:C:\WINDOWS\assembly\GAC_64\Oracle.DataAccess\2.112.2.0__89b483f429c47342\Oracle.DataAccess.dll

'Imports Oracle.DataAccess.Client
'Imports Oracle.DataAccess.Types

'Express Editionをx86でビルドする方法
'1.vbprojファイルをエディタで開く。
'2.最初の<PropertyGroup>セクションをさがしその下に次の行を追加する。
' <PlatformTarget>x86</PlatformTarget>

''' <summary>
''' Oracle
''' </summary>
''' <remarks>
''' 参照設定
''' Oracle.DataAccess
''' .NET
''' 10.2.0.100
''' True
''' C:\oraclexe\app\oracle\product\10.2.0\server\bin\Oracle.DataAccess.dll
'''
''' 32bit 環境用のDLLを使ったアプリは、x86 でビルド しておかないと動作しない。
''' Microsoft Visual Studio Express Editionでは、コンパイルの詳細設定での選択ができない。
''' x86でビルドするには
''' プロジェクト ファイルを開き
''' 最初の <PropertyGroup>・・・</PropertyGroup> セクションを探す。
''' そのタグのあとに次の行を追加する。"<PlatformTarget>x86</PlatformTarget>"
''' </remarks>

   ''' <summary>
   ''' 接続情報、SQLを基にデータテーブルを返す
   ''' </summary>
   ''' <param name="wp_ConnectInfo">接続情報</param>
   ''' <param name="wp_Sql">SQL</param>
   ''' <returns>データテーブル</returns>
   ''' <remarks></remarks>
   Public Function pf_dt(wp_ConnectInfo As clsConnectInfo, ByVal wp_Sql As String) As dt
       Dim ret As New dt()
       Dim dt As New DataTable()
       Dim cn As New Oracle.DataAccess.Client.OracleConnection(mf_ConnectString(wp_ConnectInfo))
       cn.Open()
       Dim cmd As New Oracle.DataAccess.Client.OracleCommand(wp_Sql, cn)
       Dim ds As New DataSet
       Dim da As New Oracle.DataAccess.Client.OracleDataAdapter(cmd)
       da.Fill(ds, "data")
       dt = ds.Tables(0)
       For i As Integer = 0 To dt.Rows.Count - 1
           Dim cells As New clsCells
           For j As Integer = 0 To dt.Columns.Count - 1
               Dim w As String = ""
               Select Case dt.Columns(j).DataType.Name
                   Case "String"
                       w = dt.Rows(i).Item(j).ToString
                   Case "Single"
                       w = pf_ObjectToDouble(dt.Rows(i).Item(j)).ToString
                   Case "Decimal"
                       w = pf_ObjectToDouble(dt.Rows(i).Item(j)).ToString
                   Case "DateTime"
                       If IsDate(dt.Rows(i).Item(j)) Then
                           w = pf_ObjectToDate(dt.Rows(i).Item(j)).ToString("yyyy/MM/dd HH:mm:ss")
                       End If
                   Case Else
                       'MsgBox(dt.Columns(j).DataType.Name, MsgBoxStyle.SystemModal)
                       Debug.Print(dt.Columns(j).DataType.Name)
                       w = dt.Rows(i).Item(j).ToString
               End Select
               cells.Cells.Add(w)
           Next
           ret.Rows.Add(cells)
       Next
       Return ret
   End Function

   ''' <summary>
   ''' 接続情報を基に接続文字列を返す
   ''' </summary>
   ''' <param name="wp_ConnectInfo">接続情報</param>
   ''' <returns>接続文字列</returns>
   ''' <remarks></remarks>
   Private Function mf_ConnectString(wp_ConnectInfo As clsConnectInfo) As String
       Dim ret = "user id=x;password=x;data source=xe"
       'TODO 2017.10.26 NMHIS M.Nakagawa 以下1行削除
       'ret = String.Format("user id={0};password={1};data source={2}", wp_ConnectInfo.c0UserId, wp_ConnectInfo.c1Password, wp_ConnectInfo.c2DataSource)
       'TODO 2017.10.26 NMHIS M.Nakagawa 以下1行追加
       ret = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=x-PC)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));User Id=x;Password=x;"
       Return ret
   End Function

タグ:

+ タグ編集
  • タグ:
最終更新:2017年10月26日 20:59