2013-05-20 41 views
1

我有一個SQL語句將根據它們的ID和區域刪除某一行。我可以在沒有執行語句本身的情況下使用system.out.println這個語句嗎?我只是想確定我所刪除的內容是否正確。如何在不執行sql語句的情況下打印sql結果?

下面是一個簡單的聲明:

PreparedStatement ps = db.getPreparedStatement("delete from tbl_traininglinks where training_title IN ('"+vwarnid+"')"); 
    int i=ps.executeUpdate(); 
+0

將其更改爲選擇查詢。 –

+2

你是什麼意思,而不執行該聲明?你的意思是你的DELETE語句?然後,您可以首先使用SELECT語句,並使用與DELETE語句相同的WHERE子句,然後輸出結果。這樣,你不會首先執行你的DELETE語句。但是,在刪除特定數據之前,您確實執行了SELECT語句。 –

+0

@MichaelArdan你是對的。謝謝。 – Newbph

回答

1

我已經注意到這個問題已經回答的意見,但我想補充一些東西,可能是相關的,這取決於你的應用程序是如何使用的。

如果使用SELECT並等待用戶確認使用DELETE之前,在表中的數據可能會在此期間被改變,你可以最終刪除行你沒有在SELECT聲明獲取和用戶做不驗證刪除。即使您只是顯示SELECT聲明的結果,然後立即刪除,但可能會發生這種情況,但機會較小。

相反,我建議你使用SELECT和用戶驗證後刪除構建一個使用您在SELECT聲明接收行的密鑰的DELETE SQL命令。這樣你只刪除用戶驗證刪除的內容。

-1

有一個叫

ROLLBACK 

,如果你正在使用事務數據庫功能。

+0

這是真的。您能否詳細說明如何將它與JDBC一起使用? – Makoto

+0

我會建議反對它。這在批量使用時會非常糟糕,特別是與上面的建議相比(使用SELECT而不是DELETE)。話雖如此,您可以[這種方式]開始一個事務(http://www.postgresql.org/docs/9.2/static/sql-begin.html),然後通過使用[COMMIT](http:/ /www.postgresql.org/docs/9.2/static/sql-commit.html),但[ROLLBACK](http://www.postgresql.org/docs/9.2/static/sql-rollback.html)。 – 0xCAFEBABE