자바 DB연동 하는데요~님들의 조언이 필요해요~
맑다
일단, title, author, price라는 세개의 필드가 존재하구요~
여러 버튼이 있어요.
모두보기, 검색, 추가, 삭제 등등 몇가지 버튼이 존재하구요.
문제가 되는게 검색버튼인데요~
조건에 title값과 author값이 입력되면
입력된 title값과author값이 동시에 일치하는 레코드를 검색하는건데요.
아무래도 에러가 안나는 걸로 보아서는
조건식을 좀 잘 못 준것같은데요.. 제 조건식의 문제가 있는지 한번 봐주세요 ~
(몇일전에도 비슷한 문제로 질문드렸는데요~ 이번꺼와는 조금 다른데.. 또 잘 안되더라구요..한번만 봐주세요~^^)
//검색하는 쿼리
class SearchRecord implements ActionListener {
PreparedStatement pstmt = null;
ResultSet rs=null;
public void actionPerformed(ActionEvent ev) {
try {
conn = DriverManager.getConnection(URL,ID,PASSWORD);
if(title.getText()!= && author.getText()!=){
String strQuery = select * from book where title=? AND author=?;
pstmt = conn.prepareStatement(strQuery);
pstmt.setString(1,author.getText());
}
rs = pstmt.executeQuery();
while(rs.next()){
msg.append(rs.getString(title)+\t\t);
msg.append(rs.getString(author)+\t);
msg.append(rs.getInt(price)+\n);
}
} catch(Exception exception){
msg.append(에러+exception.getMessage()+\n);
} finally{
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException ex) {}
}
}
}
-
소아
세크매트님,앗쮸앗수다님 말씀대로 해야 하는데.. 오류 자체가 않난다는게 신기하네요..;;; 바인딩 변수가 부족하다인가?? 그런 sqlexception이 발생할텐데..;; 오류내용을 저장하는 msg를 찍는 부분이 없는건 아닌가요??
어잿든.. 쿼리가 실행이 않되는거 같을 경우에는 해당 쿼리를 직접 db에 날려보는 것이 좋습니다. 그럼 쿼리가 문제가 있는건지 조건에 맞지 않아 데이터가 않나오는건지 바로 알 수 있으니깐요.. -
반혈
ㄴ 오타 나셨습니다. author, ;;; ?가 2개니까 setString를 2번해야지요~ 따로하는거보다
쿼리문에 바로 하는것도 보기 깔끔한거 같던뎅 where title= %\ + title.getText() + \% and author= %\ + author.getText() + \ %; \ 더복잡한가요 -_- -
옆집언니
pstmt.setString(1, title.getText());
pstmt.setString(2, auther.getText());
system.out을 찍어서 로그를 확인 하는것이 가장 빠른 확인일것 같습니다만 -
가람슬기
음...첫번째 물음표에 아무래도 title.getText() 요걸 넣고 두번째 ? 에 author.getText() 를 넣는게..더 좋겠네요. 쿼리보니깐
-
바닐라
정확히는 실제 실행해보지 않아서 모르겠는데요. 쿼리는 이상이 없네요. 근데 ? 가 2갠데요. setString() 메소드는 한번쓰네요.^^ 요고 쫌 이상함 pstmt.setString(2, title.getText()); 요고 넣어보세요.