2017-12-30 60 views
-2

に私はCRUD操作が、私は実行するたびに実行するためにJavaでデータベースに接続しようとしていますそのも含まれ、エラーのリストを提供します:
com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexceptionをJavaの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は私の知る限りでは動的なデータアクセス用ですので、私のコードでprepare文をどのように使いますか? –

+0

多くのチュートリアルがインターネット上で利用可能です。 – Ravi