- PR -

JDBC経由とAccessのSQLビューでの実行結果の差異(Like演算子)

1
投稿者投稿内容
yosute
会議室デビュー日: 2008/06/25
投稿数: 2
投稿日時: 2008-06-25 21:31
初めて利用させて頂きます。
至らぬ点などあればご指摘いただけると幸いです。

JSP+Servlet+Access(mdbファイル)+Apatch Tomcat6.0で
mdbの検索結果をブラウザに表示する仕組みを作成しようとしています。
以下のようなSQL文、Javaソースにおいて、forループの中に入らず
検索結果が0件となってしまいました。
ところが、AccessのSQLビューに、SQL文を貼り付け実行してみたところ
2件HITしたのです。

===============================================================================
// 中略
ResultSet res = st.executeQuery(sql);
for (int i = 0; res.next(); i++) {
// データ取得
}

SQL文(Eclipseのデバッグビューの変数"sql"から取得したもの)
SELECT * FROM T_PC_MASTER WHERE PC_KBN = '22' AND (SHAIN_NM LIKE '吉田*') AND HENKYAKU_DATE =''
===============================================================================

LiKE演算子に入る値は変数で定義されてあり、ここを空にした場合や、完全一致する
文字列を入力した場合は、期待した検索結果が返ってきました。
LIKE演算子の使い方が間違っているのでしょうか?
それともほかに要因が・・・?

なお、ドライバはsun.jdbc.odbc.JdbcOdbcDriveを使っています。

以上、よろしくお願いいたします。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2008-06-25 22:45
引用:

yosuteさんの書き込み (2008-06-25 21:31) より:
SQL文(Eclipseのデバッグビューの変数"sql"から取得したもの)
SELECT * FROM T_PC_MASTER WHERE PC_KBN = '22' AND (SHAIN_NM LIKE '吉田*') AND



SQLのワイルドカードは'%'です。'*'を使うのはAccessくらいです。
ODBCはその辺の変換もしていたと思うので、試してみましょう。

ついでにMDBを捨てて他のまともなDBMSに移行した方がいいですよ。
気軽に複数人で同時に使うとデータファイルが壊れたりしますので。
yosute
会議室デビュー日: 2008/06/25
投稿数: 2
投稿日時: 2008-06-26 09:14
あしゅ殿

ご指摘いただいた%で無事HITしました。
ありがとうございました。

MDBについては私も苦い思い出もあり、MYSQLへの以降の準備はしていたのですが
現状、このmdbは毎日バックアップを行っているファイルサーバーにおいてあり
他のDBMSへ移行するとなると、SQLサーバーを新たに用意し、
それのバックアップも行う必要もあるということから、導入を見送っていました。
ですが改めて指摘を受けると・・・。やはり再検討してみたほうがいいですよね。

こちらも再検討してみます。ありがとうございました。
1

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