1

したがって、プログラムは、データベースとして .mdb ファイルに接続しています。他のすべてのコードをプログラムに書き込んで、正常に動作することはわかっていますが、createQuery(Sring, int) メソッドにパラメーターとして渡される複雑な SQL ステートメントに問題があります。

Name、Id、City、State Classes を持つ 2 つのテーブル Person があり、ID、Course、Grade があります。

この行の目的は、Persons テーブルから「Name and Id」を出力し、Classes テーブルから「Course and Grade」を出力することです。クエリは、一致する ID (Person.Id = Classes.Id) を持ち、特定のコース ('CSC 225') で、成績が 70 を超えるエントリのみを出力します。

SQL ステートメントについて詳しく教えられたことがないため、私の基本的な理解は次のコード行を作り上げたものです。

String s = "SELECT " + personTableTitle + ".Name, " + personTableTitle + ".Id, " + 
                            classesTableTitle + ".Course, " + classesTableTitle + ".Grade FROM " +
                            personTableTitle + " " + classesTableTitle + " WHERE " +
                            personTableTitle + ".ID = " + classesTableTitle + ".Id AND " +
                            "Course = 'CIS 225' AND " + classesTableTitle + ".Grade > 70 AND " +
                            personTableTitle + ".Id = ? AND " + classesTableTitle + ".Id = ?";

System.out.print(s);   // Double check of my SQL Statement before passing

db.createQuery(s, 4);

私は水曜日の夜からこの SQL ステートメントをいじっていましたが、うまくいきませんでした。

4

4 に答える 4

0

SQLコードについて私が提案するものは次のとおりです

String s = "SELECT P.Name, P.Id, ";
s = s + "C.Course, C.Grade ";
s = s + "FROM Person P ";
s = s + "JOIN Classes C  ";
s = s + "ON P.ID = C.ID ";
s = s + "WHERE Course = 'CIS 225' AND C.Grade > 70;";

各課題を独自の行に分割します。

于 2013-07-20T03:54:42.500 に答える
0

私は2つの問題しか見ていません。FROMSQL では、句内のテーブル名の間にカンマが必要...FROM table1, table2 WHERE...です。したがって、行を次のように変更します

             personTableTitle + ", " + classesTableTitle + " WHERE " +

この次のものは問題にならないかもしれませんが、すべてのフィールド参照の前にテーブル名を含めることをお勧めします。

             classesTableTitle + ".Course = 'CIS 225' AND " + classesTableTitle + ".Grade > 70 AND " +
于 2013-07-19T22:24:25.973 に答える