2013-05-02 336 views
7

JDBCを使用してJavaからテーブルからデータを削除しようとしています。最初に、行の数を数え、テーブルが空でないことを確認してから、データを切り捨てます。エラーが切り捨て表dbo.Linkであるステートメントは結果セットを返しませんでした。 Javaエラー

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) 

:ここ

は私が

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

エラーを使用していたコードです。

これは正しい方法ですか?

誰かが私を助けてくれますか?

ありがとうございました。

答えて

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 - 選択は問題ではありません。 OPは "エラーが切り捨てテーブルdbo.Linkにあります"と述べています。 – rgettman

+0

うわー。ありがとう、トン。私はそれを見ませんでした。 – Huzaifa

+0

@rgettman前のコメントは、あなたが答えを更新する前に有効でした。私はそのコメントを削除します。 – Smit