- PR -

VB.NETでSystem.Data.OracleClientを利用したSQL文実行について

1
投稿者投稿内容
RIE
会議室デビュー日: 2003/12/08
投稿数: 6
投稿日時: 2004-12-08 14:30
お世話になっております。

VB.NETで開発を行っておりますが、以下のような現象が発生した場合の解決方法などがありましたら、教えていただけないでしょうか。

開発環境は
 OS:Win2K SP3、VB.NET2003、Framework1.1 SP1、Oracle9i
となっております。

 Oracleへの接続はSystem.Data.OracleClientを使用しており、
  dbCMD = New OracleCommand(v_strSQL, _myConnection)
  dbDataReader = dbCMD.ExecuteReader()
というような記述で実行しております。
 この時、「SELECT * FROM テーブル名 WHERE 名称 LIKE '%会社名%'」のような”"を含むSQLを発行した場合、該当データが存在している場合にも対象データを抽出されません。
 ちなみに、上記のSQLをObjectBrowserで実行すると対象データが抽出されます。

そこで、文字列のエンコードに問題があるのかと思い、対象SQL文をShift-JISにエンコードしてから実行してみたのですが、結果は変わりませんでした。

 このような結果になってしまう原因がわからず皆さまのお知恵を拝借できればと思い投稿しました。
 参考になる文献、URLまたは実現方法のヒントなど有りましたらよろしくお願い致します。
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-12-08 15:18
こんにちは。

パラメータを使用すればどうなりますか?

あと、『v_strSQL』の変数の中身のSQL文をObjectBrowserに渡しても
ちゃんと取得できますか?

[ メッセージ編集済み 編集者: とっと 編集日時 2004-12-08 15:22 ]
RIE
会議室デビュー日: 2003/12/08
投稿数: 6
投稿日時: 2004-12-08 15:47
とっと様 ご返答ありがとうございます

>あと、『v_strSQL』の変数の中身のSQL文をObjectBrowserに渡しても
ちゃんと取得できますか?

v_strSQLの内容をそのままObjectBrowserにコピペしても抽出が出来ます。

>パラメータを使用すればどうなりますか?

パラメータを使用するとは具体的にどのようなことなのでしょうか?
申し訳ありませんが、教えていただければ幸いです
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-12-08 16:12
こんにちは。

OracleClientは使った事ないので・・

OleDbになりますが、

v_strSQLの中身が

SELECT * FROM テーブル名 WHERE 名称 LIKE ?

となり、コマンドに対してパラメータをセットしてあげます

dbCMD = New OracleCommand(v_strSQL, _myConnection)
'パラメータクリア
dbCMD.Parameters.Clear()
'パラメータの追加
dbCMD.Parameters.Add("pKaisha", OleDb.OleDbType.VarChar).Value = "%" & Trim(TextBox1.Text) & "%"

データプロバイダーの種類によって『?』の部分など若干の違いはありますが、おおむね
こんな感じです。詳細はヘルプ等でお調べください。

また、原因自体は現時点では、はっきり分かりませんのでご了承を。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-12-09 21:40
 「名称」列は、VARCHAR2ですか?NVARCHAR2ですか?
 VARCHAR2の場合、データベースのキャラクタ・セットを何にしましたか?
 システム環境変数のNLS_LANGは、データベースのキャラクタ・セットと整合していますか?

_________________
1

スキルアップ/キャリアアップ(JOB@IT)