2017-02-03 5 views
-1

私はWEBプロジェクトに取り組んでいます。ユーザーが登録できるようにしたいので、ユーザーが自分の詳細(ユーザー名、パスワード、ニックネームなど)を書いた後、conn.prepareStatementがエラーをスローする

try { 

     Context context = new InitialContext(); 
     BasicDataSource ds = (BasicDataSource) context 
       .lookup(getServletContext().getInitParameter(UAppConstants.DB_DATASOURCE) + UAppConstants.OPEN); 
     Connection conn = ds.getConnection(); 

     PreparedStatement stmt; 
     try{ 
      System.out.println("1"); 

      stmt = conn.prepareStatement(UAppConstants.SELECT_USER_BY_NICKNAME_STMT); 

      System.out.println("2"); 

      stmt.setString(1, _nickname); 
      //here some other code 

      }catch (SQLException e) { 
       System.err.println(e.getMessage()); 
      } 
    //here some other code 


} 
catch (SQLException | NamingException e) { 
     getServletContext().log("Error while closing connection", e); 
     response.sendError(500);// internal server error 
    } 

UAppConstant.java:

public final String SELECT_USER_BY_NAME_STMT = "SELECT * FROM USERS " + "WHERE username=?"; 
    public final String SELECT_USER_BY_NICKNAME_STMT = "SELECT * FROM USERS" + "WHERE nickname=?"; 

とSQLテーブル内のサーブレットで私が書いたように、ユーザ名または彼が入力されたニックネームは、(Usersテーブルに存在しない)一意です列username、ニックネームがあります。

問題は、それがコンソールに1を出力しますが、それは2を印刷したことがないということです、代わりに、それは印刷します

Syntax error: Encountered "=" at line 1, column 34. 

私はすべての「=」サーブレットで上を見て、それらのすべてが右にあります構文!ヘルパーのための

感謝:)

+0

は、完全なスタックトレースを追加 – Jens

+0

は、私はそれをどのように行うことができます「=」 – desperateCoder

+0

の前後にスペースを挿入してみてください? @Jens – user6561572

答えて

1

あなたはおそらく、あなたの準備文のテンプレートにパラメータ番号を指定するのを忘れていました。したがってPreparedStatementは、の代わりにどのパラメータを設定するのか把握できません。。また、 "" だから

USERS間行方不明、代わりにされています

"SELECT * FROM USERS" + "WHERE nickname=?" 

あなたが書く必要があります:

"SELECT * FROM USERS " + "WHERE nickname=?1" 

と同様に、代わりの:

"SELECT * FROM USERS " + "WHERE username=?" 

あなたはLD書き込み:

"SELECT * FROM USERS " + "WHERE username=?1" 
+0

最初のステートメント(ニックネーム)の 'users'と 'where'の間に空白がありません – desperateCoder

+0

申し訳ありません、修正されました。 –

+0

@utsav_deep働いていただきありがとうございます – user6561572

関連する問題