2016-07-03 2 views
-1

준비된 명령문 내에서 SQL 코드 구문 오류가 발생합니다. 사이트에서 다른 답변을 읽었으므로 문제를 해결할 수 없습니다. 다음과 같이 내 코드는Java Mysql 준비된 문 구문 문제

 private boolean validate_login(String username,String password) { 
    try{   
     Class.forName("com.mysql.jdbc.Driver"); // MySQL database connection 
     String url = "jdbc:mysql://localhost/db_webstore"; 
     String user = "root"; 
     String pw = "Password"; 




     String SQL = "select * from tbl-users where Tbl-UsersUserName=? and Tbl-UsersPassword=?"; 


     Connection conn = DriverManager.getConnection(url, user, pw); 
     PreparedStatement pst; 
     pst = conn.prepareStatement(SQL); 
     pst.setString(1, username); 
     pst.setString(2, password); 
     ResultSet rs = pst.executeQuery();       

     if(rs.next())    
      return true;  
     else 
      return false;    
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
     return false; 
    }  


    }  

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException을 다음과 같이 오류 메시지가 : 당신은 당신의 SQL 구문에 오류가 있습니다; 올바른 구문을 찾으려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 여기서 '-users'는 Tbl-Users의 SQL 구문에 오류가 있습니다. '-users'근처에서 사용할 올바른 문법은 MySQL 서버 버전에 해당하는 설명서를 확인하십시오.

누구든지 조언을 해 줄 수 있습니까? 미리 감사드립니다.

+0

수 우리가 TBL 사용자 구조를 다음과 같이 수정해야 데이터베이스 연결에 (MySQL에 대한 3306이다) 포트 번호를 포함해야합니까? – Malinga

+1

은 tbl-users 유효한 테이블 이름입니까? –

+0

@anaspa 유효한 것으로 보이지 않습니다. http://dev.mysql.com/doc/refman/5.7/en/identifiers.html – Tom

답변

1

검색어에 일부 점이 누락되었을 수 있습니다. 표와 열 이름은 점으로 구분해야합니다. 또한 테이블 이름 (here 참조) 인용되지 않은 식별자에서 허용되지 않습니다 -을 인용 할 필요가 :

String SQL = "select * from `Tbl-Users`" 
     + " where `Tbl-Users`.UserName=?" 
     + " and `Tbl-Users`.Password=?"; 

UPDATE :

  • 유효한 식별자
  • 을에 MySQL의 다큐에 추가 링크
  • '
  • 을 사용하는 따옴표 표 이름
0

당신은

그에 따라 코드가

private boolean validate_login(String username,String password) { 
    try{   
     Class.forName("com.mysql.jdbc.Driver"); // MySQL database connection 
     String url = "jdbc:mysql://localhost:3306/db_webstore"; 
     String user = "root"; 
     String pw = "Password"; 




     String SQL = "select * from tbl-users where Tbl-UsersUserName=? and Tbl-UsersPassword=?"; 


     Connection conn = DriverManager.getConnection(url, user, pw); 
     PreparedStatement pst; 
     pst = conn.prepareStatement(SQL); 
     pst.setString(1, username); 
     pst.setString(2, password); 
     ResultSet rs = pst.executeQuery();       

     if(rs.next())    
      return true;  
     else 
      return false;    
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
     return false; 
    }  


    }