-1

ユーザーからの入力として SSN の最後の 4 つの数字を取得して、2 つのテーブルのデータを検索しようとしています。

次のような JDBC クエリがあります。

`String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE"
             +"FROM" +" G.M_NAME_A N, G.M_ID_A M"
             +"WHERE" + "N.NUMBER = M.NUMBER"
             +"AND" + "M.SSN like 'l4ssn' ";'

「期待される場所に FROM キーワードが見つかりません」または「無効な列インデックス」で失敗します。

クエリのフォーマットを手伝ってください。

4

5 に答える 5

0

このクエリを試してください

String sql=" SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE "+
           " FROM G.M_NAME_A N,G.M_ID_A M "+
           " WHERE N.NUMBER = M.NUMBER "+
           " AND M.SSN like 'l4ssn' ";
于 2013-09-24T05:32:26.143 に答える
0

SQL を次のように変更します。FROM、WHERE、AND の前後にスペースが追加されます

String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE"
         +" FROM " +" G.M_NAME_A N, G.M_ID_A M"
         +" WHERE " + "N.NUMBER = M.NUMBER"
         +" AND " + "M.SSN like 'l4ssn' ";

あなたのクエリは、言うのと同じようにM.SSNwhich isを探します。代わりに使用するのと同様のクエリを使用する場合14ssnM.SSN = '14ssn'14ssnM.SSN like '%14ssn%'

補足として、SQL文字列でクエリパラメーターを使用する代わりに、準備されたステートメントを使用してください。

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

于 2013-09-24T05:01:45.110 に答える
0
The question is resolved using the following query and PreparedStatement:
String l4ssn=("%"+l4ssn);
String sql = "SELECT N.NUMBER,N.LAST_NAME,N.FIRST_NAME,M.SSN,M.SEX,M.BIRTH_DATE"
     +" FROM " +" G.M_NAME_A N, G.M_ID_A M"
     +" WHERE " + "N.NUMBER = M.NUMBER"
     +" AND " + "M.SSN like ?";
PreparedStatement pstmt = new PreparedStatement(sql);
pstmt.setString(1,l4ssn);
于 2013-09-26T01:59:33.827 に答える