7

JDBC を使用して 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 にあります。

私はこれを正しい方法でやっていますか?

誰かがこれを手伝ってくれませんか。

ありがとう。

4

1 に答える 1

22

executeQueryDDL ステートメントの実行には使用しないでください。使用してexecuteUpdateください。

リンクされた Javadoc から引用するには:

指定された SQL ステートメント (INSERT、UPDATE、DELETE ステートメント、または SQL DDL ステートメントなどの何も返さない SQL ステートメント) を実行します。

(私のものを強調)

また、truncate table ステートメントは DDL ステートメントです。

于 2013-05-02T22:25:04.710 に答える