2012-12-29 66 views
-1

我無法解釋爲什麼這個刪除語句不會執行,也不會給我任何異常。這個刪除語句不會執行,也不會給出任何異常

這裏EGN是我的PostgreSQL數據庫改變字符,我想刪除整個行,其中EGN =「750698」 這裏是我的代碼

package 
com.tan; 
import 
java.io.File; 
import 
java.sql.*; 
import 
javax.xml.parsers.DocumentBuilder; 
import 
javax.xml.parsers.DocumentBuilderFactory; 
import 
org.w3c.dom.*; 
public 
class test_selectconect 
{ 

    public static void main(String[] args) throws ClassNotFoundException 
    { 
    // delte 
Connection conn= 
null; 
Class.forName(
"org.postgresql.Driver"); 
try 
{ 
conn= DriverManager.getConnection(
"jdbc:postgresql://localhost:5432/tanyaprobadatabase", "postgres", "123"); 
} 
catch (SQLException ex1) 
{ 
ex1.printStackTrace(); 
} 
Statement delstmt = null; 
String delQuery= "delete from tanya_students"; 
delQuery += "where egn= '750698'"; 
try 
{ 
delstmt=conn.createStatement(); 
delstmt.executeUpdate(delQuery); 
} 
catch (Exception ex) 
{} 
System.out.print("delete is ok"); 
} 
    } 
  
+1

如果自動提交關閉,則更改將不會反映在數據庫中。確保自動提交已打開,否則提供c​​on.commit();查詢後。 – nitgeek

+1

你還沒有指定printStacktrace。那麼你怎麼能說異常不會發生? – Prateek

+0

確切地說。你沒有理由斷言沒有拋出異常。不是一個真正的問題。 – EJP

回答

1

首先所有,你需要在表名和「where」之間留出空格。目前您的完整查詢是「從tanya_studentswhere egn ='750698'刪除」,它必須是.... tanya_students其中....

+1

謝謝!這是問題所在 –

0
String delQuery= "delete from tanya_students"; 
delQuery += "where egn= '750698'"; 

結果「從tanya_studentswhere EGN刪除= '750698'」

與不抓的SQLException,只是扔,就是把它添加到throws

+0

爲什麼他不應該發現異常? – nitgeek

+0

它隱藏了錯誤。如果他沒有捕獲它,程序將終止並且錯誤堆棧跟蹤將被打印在控制檯上 –

+0

同樣的事情可以在catch中完成 – nitgeek

相關問題