[SQL] 어떻게 자바에서 선택 쿼리를 위해 준비된 문을 사용 하는가?
SQL어떻게 자바에서 선택 쿼리를 위해 준비된 문을 사용 하는가?
나는 준비된 문을 사용하여 여러 번 시도했지만 그것은 SQL 예외를 반환합니다. 여기 내 코드는 다음과 같습니다
public ArrayList<String> name(String mobile, String password) {
ArrayList<String> getdata = new ArrayList<String>();
PreparedStatement stmt = null;
try {
String login = "select mobile, password from tbl_1 join tbl_2 on tbl_1.fk_id=2.Pk_ID where mobile=? and password=?";
String data = "select * from tbl_2 where password='" + password + "'";
PreparedStatement preparedStatement = conn.prepareStatement(login);
preparedStatement.setString(1, mobile);
preparedStatement.setString(1, password);
ResultSet rs = preparedStatement.executeQuery(login);
Statement stmts = (Statement) conn.createStatement();
if (rs.next()) {
System.out.println("Db inside RS");
ResultSet data = stmts.executeQuery(data);
while (data.next()) { /* looping through the resultset */
getdata.add(data.getString("name"));
getdata.add(data.getString("place"));
getdata.add(data.getString("age"));
getdata.add(data.getString("job"));
}
}
} catch (Exception e) {
System.out.println(e);
}
return getdata;
}
이 실행하는 동안, 나는 다음과 같은 SQL 예외를 가지고 :
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? and password=?' at line 1.
어떤 제안이 일을 만들어? 코드의 조각이 이해된다.
해결법
-
==============================
1.당신은 사용할 필요가 :
당신은 사용할 필요가 :
preparedStatement.executeQuery();
대신에
preparedStatement.executeQuery(login);
당신이하는 executeQuery ()에 문자열을 전달하면 쿼리는 말 그대로 따라서 실행된다? 다음 오류를 생성하는 데이터베이스로 전송됩니다. 쿼리 문자열을 전달함으로써 당신은 실행하면 값을 전달하는 내용은 "캐시"준비된 명령문을하지 않습니다.
-
==============================
2.두 매개 변수에 대해 당신은 preparedStatement.setString (1 ..)를 사용; 상기 제 1 파라미터는 두 번으로 설정한다. 하지만 당신은 두 번째 매개 변수의 값을 설정하지 않습니다.
두 매개 변수에 대해 당신은 preparedStatement.setString (1 ..)를 사용; 상기 제 1 파라미터는 두 번으로 설정한다. 하지만 당신은 두 번째 매개 변수의 값을 설정하지 않습니다.
변화 때문에
preparedStatement.setString(1, mobile); preparedStatement.setString(1, password);
에
preparedStatement.setString(1, mobile); preparedStatement.setString(2, password);
from https://stackoverflow.com/questions/24692296/how-to-use-prepared-statement-for-select-query-in-java by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL은 # 1140 - GROUP 컬럼의 혼합 (0) | 2020.05.27 |
---|---|
[SQL] SqlParameter에 C #을 표 이름과 테이블 필드? (0) | 2020.05.27 |
[SQL] SQL 갱신 TOP1 행 쿼리 (0) | 2020.05.27 |
[SQL] SQL 서버 : DATABASE를 생성에 사용되는 매개 변수 (0) | 2020.05.27 |
[SQL] SQL 서버 ID 열 값은 0에서 시작하는 대신 1 (0) | 2020.05.27 |