2013-05-02 13 views
7

Próbuję usunąć dane z tabeli z Java za pomocą JDBC. Najpierw liczę liczbę wierszy i upewniam się, że tabela nie jest pusta, a następnie skracam dane.Instrukcja nie zwróciła zestawu wyników. Błąd Java

Oto kod używam

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

Error:

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) 

Błąd znajduje się na truncate table dbo.Link.

Czy robię to we właściwy sposób?

Czy ktoś może mi w tym pomóc?

Dzięki.

Odpowiedz

21

Nie należy używać executeQuery do wykonywania instrukcji DDL; użyj executeUpdate.

Cytując z połączonych Javadocs:

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.

(Kopalnia nacisk)

oraz oświadczenie tabeli truncate jest oświadczenie DDL.

+0

@Smit - Wybór nie jest problemem. OP stwierdza, że ​​"Błąd występuje w dblinku tabeli skróconej.". – rgettman

+0

Wow. Dzięki za tonę. Nie widziałem tego. – Huzaifa

+0

@rgettman Poprzedni komentarz był ważny, zanim zaktualizowałeś odpowiedź. Skasuję ten komentarz. – Smit

Powiązane problemy