2013-08-29 3 views
-2

Я пытаюсь обновить или удалить данные из базы данных, но это не работает. Я не знаю, что вчера что-то делал, пока сон пытался исправить еще одну проблему. И теперь это не работает. Вот код для обоих. Где моя проблема? Когда я использую команду delete, она обновляется, но пытается обновить таблицу, это не обновление таблицы. Где моя проблема, как я могу это исправить?Не удается обновить и удалить данные из базы данных

private void cmd_deleteActionPerformed(java.awt.event.ActionEvent evt) {           

     String sql="delete from maintable where İsim =? "; 



     try{ 

     pst=conn.prepareStatement(sql); 

     pst.setString(1, jTextField1.getText()); 

     pst.execute(); 

     JOptionPane.showMessageDialog(null, "Silindi"); 


     }catch(Exception e){ 

     JOptionPane.showMessageDialog(null, e); 


     } 

     Update_table(); 




    }    

Это для обновления:

private void cmd_updateActionPerformed(java.awt.event.ActionEvent evt) {           

try{ 

String value1=jTextField1.getText(); 
String value2=jTextField2.getText(); 
String value3=jTextField3.getText(); 
String value4=jTextField4.getText(); 
String value5=jTextField5.getText(); 



String sql="update maintable set İsim='"+value1+"' ,Yaş ='"+value2+"',Konum ='"+value3+"',EPosta='"+value4+"',KatılımTarihi='"+value5+"' where İsim='"+value1+"' "; 
       pst=conn.prepareStatement(sql); 
       pst.execute(); 
       JOptionPane.showMessageDialog(null, "Güncellendi"); 



}catch(Exception e){; 

     JOptionPane.showMessageDialog(null, e); 


} 
    Update_table(); 




    }   

EDIT: "ПСТ = conn.prepareStatement (SQL);" это дает мне красный подчеркнутый ошибки, что для SQL слова в скобках и говорит «не может найти символ»

pst=conn.prepareStatement("update maintable set İsim=?,Yaş=?,Konum=?,EPosta=?,KatılımTarihi=?"); pst.setString(1,value1); 
pst.setString(2,value2); 
pst.setString(3,value3); 
pst.setString(4,value4); 
pst.setString(5,value5); 

pst=conn.prepareStatement(sql); 

ответ

0
private void cmd_deleteActionPerformed(java.awt.event.ActionEvent evt) {           

    String sql="delete from maintable where İsim =? "; 



    try{ 

    pst=conn.prepareStatement(sql); 

    pst.setString(1, jTextField1.getText()); 

    pst.executeUpdate();// **error was here** 

    JOptionPane.showMessageDialog(null, "Silindi"); 


    }catch(Exception e){ 

    JOptionPane.showMessageDialog(null, e); 


    } 

    Update_table(); 




} 

это для обновления

private void cmd_updateActionPerformed(java.awt.event.ActionEvent evt) {           

try{ 

String value1=jTextField1.getText(); 
String value2=jTextField2.getText(); 
String value3=jTextField3.getText(); 
String value4=jTextField4.getText(); 
String value5=jTextField5.getText(); 



String sql="update maintable set İsim='"+value1+"' ,Yaş ='"+value2+"',Konum ='"+value3+"',EPosta='"+value4+"',KatılımTarihi='"+value5+"' where İsim='"+value1+"' "; 
       pst=conn.prepareStatement(sql); 
       pst.executeUpdate(); 
       JOptionPane.showMessageDialog(null, "Güncellendi"); 



}catch(Exception e){; 

     JOptionPane.showMessageDialog(null, e); 


} 
    Update_table(); 




    }   

Для вставки, обновления удаления вас следует позвонить по телефону executeUpdate() не execute()

Примечание Это не правильный способ использования PreparedStatement

String sql="update maintable set İsim='"+value1+"' ,Yaş ='"+value2+"',Konum ='"+value3+"',EPosta='"+value4+"',KatılımTarihi='"+value5+"' where İsim='"+value1+"' "; 
        pst=conn.prepareStatement(sql); 

Используйте этот способ

pst=conn.prepareStatement("update maintable set İsim=?,Yaş=?,Konum=?,EPosta=?,KatılımTarihi=?"); pst.setString(1,value1); 
pst.setString(2,value2); 
pst.setString(3,value3); 
pst.setString(4,value4); 
pst.setString(5,value5); 

pst.executeUpdate(); 
+0

Хм, спасибо за ответ, но он не работал. Оба они снова одинаковы; просто удаляя jtable или просто обновляя jtable, а не базу данных. Поэтому, когда я повторно регистрирую программы, которые не остаются такими же, какие я редактировал или удалял. И я попробовал ваш последний совет, который вы мне дали для использования, но, когда я применяю этот код к своей программе, он дает красную подчеркнутую ошибку. Я отредактирую свой вопрос. – Qce

+0

@Qce Я не могу сказать, почему вы получаете ошибку, но это правильное использование подготовленного состояния. Вы проверяете это здесь http://stackoverflow.com/questions/5591271/how-to-use-prepared-statement и здесь http: //www.roseindia.net/jdbc/jdbc-mysql/TwicePreparedStatement.shtml – SpringLearner

+0

@ace Я отредактировал свой ответ, просто скопируйте и вставьте в свой код. Если вы найдете ошибки, вы можете задать мне – SpringLearner

0

Вместо pst.execute() используют pst.executeUpdate(), то он будет работать нормально.

Для транзакций (INSERT, DELETE, UPDATE) используйте метод executeUpdate().

Для выбора (SELECT) данных используйте executeQuery().

+0

String sql = "update maintable set İsim = '" + value1 + "', Yaş = '" + value2 + "', Konum = '" + value3 + "', EPosta = '" + value4 + "' , KatılımTarihi = '"+ value5 +"' где İsim = '"+ value1 +"' "; pst = conn.prepareStatement (sql); pst.executeUpdate(); JOptionPane.showMessageDialog (null, "Güncellendi"); Это не помогло им обоим – Qce

Смежные вопросы