.NET(へたれな)コネタ Oracle接続で全角文字

まわりでMS-ACCESSを利用している人が多いので、ちょっとしたデータの参照にDLookupを利用したがります。そこで、ASP.NETにおいても利用できるように下記のメソッドを作ったのですが、これまた、OracleのViewの項目名にMS-ACCESSライクに日本語(それも全角カナ)等を使って利用しています。テーブルは初期設計で、英数のみですが、画面へのちょっとした表示用に項目名がグリッドなどでそのまま利用できるように日本語を使用しだしたらOracleSQL投げるときに、いろいろ問題が発生。基本的に「""」で囲めばOKなのですが、下記のような例ではどうにもならない問題発展。引数の「expr」に対して「""」で囲んだ文字列を渡すと、SQL実行時は問題ないのですが、「orclDr.Item(expr」の部分で列名を探せないでNGです。仕方がないので次のように修正しました。
・呼び出し時には「""」で囲まない。
・cmd.CommandText = "SELECT """ & expr & """" & vbCrLf
つまりDLookUp内部で「""」の囲みを対応しました。
最初からこうしていればよかったっす。

    'テーブル名と取得したい項目名&抽出条件で、項目内容をもどす
    Public Function DLookUp(ByVal expr As String, ByVal domain As String, ByVal criteria As String) As Object
        Dim dba As DbAccess = DbAccess.Instance
        Dim orclDr As OracleDataReader
        Dim cmd As New OracleCommand

        Try
            cmd.CommandText = "SELECT " & expr & vbCrLf
            cmd.CommandText = cmd.CommandText & "FROM " & domain & vbCrLf
            cmd.CommandText = cmd.CommandText & "WHERE " & criteria
            LoggerDebug("SqlUtility.DLookUp:SQL=" & vbCrLf & cmd.CommandText)
            cmd.Connection = dba.cnn
            dba.DbOpen()
            orclDr = cmd.ExecuteReader

            While (orclDr.Read)
                DLookUp = orclDr.Item(expr)
                Exit While
            End While

        Catch fillException As System.Exception
            'エラー処理コードをここに追加します。
            LoggerFatal("SqlUtility.DLookUp", fillException)
            Throw fillException
        Finally
            orclDr.Close()
            dba.DbClose()
        End Try
    End Function

DbAccessはコネクション管理用独自クラス