2013-05-02 58 views
7

我想從使用JDBC的Java表中刪除數據。首先,我正在統計no的行數,並確保表格不是空的,然後截斷數據。該聲明未返回結果集。 Java錯誤

這裏是我使用

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
    Connection con = DriverManager.getConnection("jdbc:sqlserver://m-i:1433;databaseName=Tes", "sa", "Password"); 
    Statement cnnt= con.createStatement(); 
    Statement del1 = con.createStatement(); 
    ResultSet rs = cnnt.executeQuery("Select count(lea) AS cnt from dbo.Link"); 
    int count= 0; 
    if(rs.next()) 
    { 
     count = rs.getInt("cnt"); 
    } 
    System.out.println(count); 
if(count != 0) 
{ 
    del1.executeQuery("Truncate Table dbo.Link"); 
} 
else 
    { 
     System.out.println("Table is already empty"); 
    } 

錯誤代碼:

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set. 
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190) 
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:800) 
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:689) 
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) 
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180) 
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155) 
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:616) 

的錯誤是將truncate table dbo.Link。

我這樣做是正確的嗎?

有人可以幫助我這個請。

謝謝。

回答

21

請勿使用executeQuery來執行DDL語句;使用executeUpdate

從關聯的Javadoc引用:

Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.

(重點煤礦)

而truncate table語句是DDL語句。

+0

@Smit - 選擇不是問題。該操作說明「錯誤在截斷表dbo.Link。」。 – rgettman 2013-05-02 22:31:22

+0

哇。萬分感謝。我沒有看到。 – Huzaifa 2013-05-02 22:34:08

+0

@rgettman先前的評論在更新答案之前有效。我將刪除該評論。 – Smit 2013-05-02 22:37:42