1

次のSQLステートメントを(Javaアプリケーションで)実行しようとしています。

SELECT * FROM Tbl_Job WHERE jobname LIKE '%aa%';

しかし、MS Access(2002)を使用して同じ(正しい?)結果を得ることができません。

SELECT * FROM Tbl_Job WHERE jobname LIKE '*aa*';

この例では、Accessは400個のデータセットを提供し、Javaアプリケーションはデータセットの正確な数がわからないので少しだけ提供します。

Javaアプリで[*]-ワイルドカードを使用しようとしましたが、データセットがまったく表示されませんでした。また、[']-文字を["]-文字に置き換えようとしましたが、これも機能しませんでした。

これが適切かどうかはわかりませんが、*。mdbファイルはMSAccess(2000)で作成されたと思います。

私のJavaコード:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection connection = DriverManager.getConnection("jdbc:odbc:_
                        Driver={Microsoft Access Driver_
                        (*.mdb)};DBQ=C:\database.mdb");
Statement stm = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stm.executeQuery(sql);
while(rs.next())
    do_some_stuff();
4

1 に答える 1

3

このSQLステートメントをJavaから、およびAccessで直接試してみることをお勧めします。

SELECT Count(*) AS num_rows FROM Tbl_Job WHERE jobname ALike '%aa%';

どちらの場合num_rowsも同じである場合は、最初のクエリのWHERE句をこれに一致するように変更します。

両方の場合で同じでない場合num_rowsは、それらがどのように異なり、どちらが正しいかを説明してください。

于 2012-11-07T14:46:30.977 に答える