2017-03-28 2 views
0

を検索して、データベースからデータを返します。これをテストすると、私のSQL構文(cPasswordの近く)にエラーが表示されます。誰でも問題を提案できますか?あなたのエラーから離れてここに問題のあるものがいくつかあります私は、ユーザー入力が両方cUsername & cPasswordと一致したときにすべてのフィールドを表示するために探しています2列

public Car getLogin(String searchUser, String searchPass) { 
    Car foundCar1 = new Car(); 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection conn = DriverManager.getConnection(url + dbName, userName, password); 
     statement = conn.createStatement(); 
     resultSet = statement.executeQuery("select * from eflow.registration where cUsername like '" + searchUser 
       + "' AND where cPassword like '" + searchPass + "'"); 

     while (resultSet.next()) { 
      foundCar1 = new Car(resultSet.getInt("cID"), resultSet.getString("cLicense"), 
        resultSet.getInt("cJourneys"), resultSet.getString("cUsername"), 
        resultSet.getString("cPassword").toString()); 
     } 
     conn.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return foundCar1; 
} 
+0

あなたはこの悪い習慣を廃止し、prepareStatmentsを使用する方法を学ぶ必要があります。 '+ searchUser + "のようなAND cPassword '" + searchPass + "'" – Sedrick

答えて

1

...私はまだSQLインジェクションを経ていないので、ご注意ください。このエラーは複数のwhere節によって発生します。変更することでこの問題を解決:

resultSet = statement.executeQuery("select * from eflow.registration where cUsername like '" + searchUser 
      + "' AND where cPassword like '" + searchPass + "'"); 

へ:

AND where cPassword likeAND cPassword like

私が見る他の事は、ワイルドカードと組み合わせて使用​​する必要がありますように変更することもできますので、ということである

resultSet = statement.executeQuery("select * from eflow.registration where cUsername like '%" + searchUser 
      + "%' AND cPassword like '%" + searchPass + "%'"); 

あなたは私が好き削除し、「=」の代わりに使用することになり、その場合には完全に一致、探している場合を除きます。

+0

これは完全に働いている "cUsernameようeflow.registration SELECT * FROM"' が。あなたのお手伝いをありがとう – user3079838

+0

歓迎です、あなたの問題を解決したら、答えをマークしてください、ありがとう! – Anand

関連する問題