2017-12-30 23 views
-2

에 내가 CRUD 작업을하지만 실행할 때마다 수행하기 위해 자바와 데이터베이스를 연결하려고 그 또한 포함 오류의 목록을 제공합니다
com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception을자바 SQLSyntaxError 연결

//Error Seems to be in my ArrayList Function 
public ArrayList<BusSetGet> bussetgetList(){ 
ArrayList<BusSetGet> usersList=new ArrayList<>(); 
try{ 
Class.forName("com.mysql.jdbc.Driver"); 
String db_connURL= "jdbc:mysql://localhost:3306/buses"; 
Connection con=DriverManager.getConnection(db_connURL); 
String query1="SELECT * FROM bus_crud"; 
PreparedStatement st=con.prepareStatement(query1); 
ResultSet rs=st.executeQuery(query1); 
BusSetGet users; 
while(rs.next()){  
users=new BusSetGet(rs.getString("bus_type"),rs.getString("bus_ID"),rs.getInt("bus_no")); 
usersList.add(users); 
} 
}catch (ClassNotFoundException | SQLException ex) { 
     System.out.println("ERROR in ArrayList Method!!"); 
    } 
return usersList; 
} 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     // TODO add your handling code here: 
     String query="insert into 
bus_crud(bus_type,bus_ID,bus_no)values('"+jComboBox1.getSelectedItem() +"','"+jTextField1.getText()+"','"+jTextField2.getText()+"')"; 
    sqlQuery(query,"Inserted"); 
}           

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    String query="UPDATE `bus_crud` SET `bus_type`='"+jComboBox1.getSelectedItem() +"',`bus_ID`='"+jTextField1.getText()+"',`bus_no`='"+jTextField2.getText()+" WHERE `bus_ID = "+jTextField1.getText(); 
    sqlQuery(query,"Updated");  
} 

//FOR SQL Query To be executed 
public void sqlQuery(String query,String message) 
{ 
Connection con=getConnection(); 
Statement st; 
try{ 
st=con.createStatement(); 
if(st.executeUpdate(query)==1) 
{ 
    //Refresh JTable 
    DefaultTableModel model=(DefaultTableModel) jTable1.getModel(); 
    model.setRowCount(0); 
    show_data_Jtable(); 
JOptionPane.showMessageDialog(null,"Data"+message+"Successful"); 
} 
else 
{ 
JOptionPane.showMessageDialog(null,"Data not"+message); 
} 
    }catch(SQLException ex) { 
     Logger.getLogger(BusCRUD.class.getName()).log(Level.SEVERE, null,ex); 
    } 
    } 

다음은 데이터베이스 인증이 실패처럼 가능한 오류를주는 기능 .. 당신이 최신 코멘트 당으로

+2

코드를 디버깅하고 문제가있는 곳을 알려주는 것이 좋습니다. 나는 틀린 것을 보지 못했다. 그러나 다시는'sqlQuery' 메소드에 대한 코드를 보여주지 않았다. –

+0

@TimBiegeleisen 방금 편집 한 코드와 sqlQuery 함수도 게시했습니다. –

+1

@JohnSnow 게시 스택 트레이스. – Ravi

답변

0

(동일하여 게시물을 업데이트하십시오)이, 보인다이다. 당신은 당신이 당신의 데이터베이스에 액세스하기 위해 몇 가지 사용자 이름/암호를 설정하고 JDBC 연결을 작성하는 동안 당신이 그것을 제공하지 않을 경우, 다음 그래서

com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception: Access Denied for user '@'localhost 

실패합니다, 이해할 필요가있다, 당신은 <db_user_name>을 통과해야하고 <db_user_password>을 사용하여 데이터베이스 연결 인스턴스를 가져옵니다.

Class.forName("com.mysql.jdbc.Driver"); 
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/buses","<db_user_name>","<db_user_password>"); 

다른 많은 구문 문제는 코드 @Anuruddha가 가리키는 그 중 하나가이 문제 중 하나입니다, 유의하시기 바랍니다. SQLs을 모두 수정해야합니다. 대신 PreparedStatement을 사용하도록 연습해야합니다.

+0

고마워요. 그러나 prepareStatement는 내 지식에 따라 동적 데이터 액세스 용으로, 어떻게 그리고 어디서 코드를 준비합니까? –

+0

인터넷에서 사용할 수있는 많은 자습서가 있습니다. – Ravi