2013-08-29 101 views
-2

我試圖從數據庫更新或刪除數據,但它不工作。我不知道昨天晚上我做了些什麼,而想睡覺時又想解決另一個問題。現在這不起作用。這是他們兩人的代碼。我的問題在哪裏?當我使用刪除命令時,它正在更新,但試圖更新表,它不更新表。我的問題在哪裏,我該如何解決這個問題?可以更新和刪除數據庫中的數據

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(); 




    }   

編輯: 「PST = 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()不是執行()

注意這是不使用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我不能說爲什麼你會收到錯誤,但這是正確使用preparedstatement.You檢查它在這裏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 =「更新維護集合İ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

相關問題