2013-05-02 48 views
7

Tôi đang cố gắng xóa dữ liệu khỏi bảng từ java bằng JDBC. Đầu tiên tôi đếm số hàng và đảm bảo rằng bảng không rỗng và sau đó cắt bớt dữ liệu.Câu lệnh không trả lại tập kết quả. Lỗi Java

Đây là mã tôi đang sử dụng

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

Lỗi:

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) 

Lỗi là tại Truncate Table dbo.Link.

Tôi có làm đúng cách này không?

Ai đó có thể giúp tôi với điều này, vui lòng.

Cảm ơn.

Trả lời

21

Không sử dụng executeQuery để thực thi tuyên bố DDL; sử dụng executeUpdate.

Để trích dẫn từ Javadocs liên kết:

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.

(tôi nhấn mạnh)

Và một tuyên bố bảng truncate là một tuyên bố DDL.

+0

@Smit - Lựa chọn không phải là vấn đề. OP nói "Lỗi này nằm ở bảng cắt ngắn.". – rgettman

+0

Rất tiếc. Cảm ơn một tấn. Tôi không thấy điều đó. – Huzaifa

+0

@rgettman Nhận xét trước đó hợp lệ trước khi bạn cập nhật câu trả lời. Tôi sẽ xóa bình luận đó. – Smit