2

こんにちは私はデータベースから値を選択するクエリがあり、選択したデータとの比較を行いたいと思います。クエリを作成してパラメータを渡すことはできますが、クエリから返された値にアクセスする際に問題が発生します。私が正しい方向に進んでいるかどうか誰かに教えてもらえますか?最後の2つのステートメントを間違って書いたと思います。

    String sql = "SELECT userName, password FROM tblusers WHERE userName = ? AND password = ? ";



    Object[] parameters = new Object[] {login.getUserName(), login.getPassword()};

    String dbUserName = (String)getJdbcTemplate().queryForObject(
            sql, parameters, String.class);

    String dbPassword = (String)getJdbcTemplate().queryForObject(
            sql, parameters, String.class);
4

2 に答える 2

5

クエリが1つのレコードのみを返す場合は、次を使用することをお勧めします。

queryForMap(String sql, Object... args)

javadocを見てください。

あなたの特定の問題については、これはうまくいくはずです:

Map<String,Object> results = 
        getJdbcTemplate().queryForMap(
            "SELECT userName, password FROM tblusers WHERE userName = ? AND password = ?"
            , login.getUserName()
            , login.getPassword());

String dbUserName = (String)results.get("userName");
String dbPassword = (String)results.get("password");
于 2012-08-21T15:12:01.933 に答える
2

クエリは2つの文字列を返します。それが意図したものである場合は、結果をオブジェクトに変換するか、ユーザー名とパスワードを一度に1つずつクエリする必要があります。行マッパーを使用して、ユーザー名とパスワードの両方を同時に取得する方法は次のとおりです。

    public class CustomRowMapper implements RowMapper {

        public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
            User user = new User();
            user.setPassword(rs.getString("password");
            user.setUserName(rs.getString("userName"); 
            return user;  
        }
    }


    String sql = "SELECT userName, password FROM tblusers WHERE userName = ? AND password =        ? ";

    Object[] parameters = new Object[] {login.getUserName(), login.getPassword()};

    User u = (User) getJdbcTemplate().queryForObject(sql, parameters, new CustomRowMapper());

さもないと ...

String sql = "SELECT userName FROM tblusers WHERE userName = ? AND password = ? ";

String userName = getJdbcTemplate().queryForString(sql, parameters);

String passwordSql = String sql = "SELECT password FROM tblusers WHERE userName = ? AND password = ? ";

String password= getJdbcTemplate().queryForString(sql, parameters);
于 2012-08-21T15:16:36.577 に答える