2013-05-02 9 views
7

Ich versuche, Daten aus einer Tabelle aus Java mit JDBC zu löschen. Zuerst zähle ich die Anzahl der Zeilen und stelle sicher, dass die Tabelle nicht leer ist, und kürze dann die Daten. HierDie Anweisung hat keine Ergebnismenge zurückgegeben. Java-Fehler

ist der Code, den ich

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"); 
    } 

Fehler bin mit:

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) 

Der Fehler ist bei der Truncate Tabelle dbo.Link.

Mache ich das richtig?

Kann mir bitte jemand dabei helfen.

Danke.

Antwort

21

Verwenden Sie nicht executeQuery, um eine DDL-Anweisung auszuführen; Verwenden Sie executeUpdate.

aus dem verknüpften Javadocs zu zitieren:

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.

(Hervorhebung von mir)

Und eine truncate table-Anweisung ist eine DDL-Anweisung.

+0

@Smit - Die Auswahl ist nicht das Problem. Das OP gibt an, dass "der Fehler bei der Abkürzungstabelle dbo.Link ist". – rgettman

+0

Wow. Danke vielmals. Das habe ich nicht gesehen. – Huzaifa

+0

10 @gerttman Der vorherige Kommentar war gültig, bevor Sie die Antwort aktualisiert haben. Ich werde diesen Kommentar löschen. – Smit

Verwandte Themen