2013-05-02 4 views
7

JDBC를 사용하여 Java에서 테이블에서 데이터를 삭제하려고합니다. 먼저 행의 수를 세고 테이블이 비어 있지 않은지 확인한 다음 데이터를 잘라냅니다.문이 결과 집합을 반환하지 않았습니다. 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) 

오류가 자르기 표 dbo.Link에 있습니다 : 여기

내가

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.

(강조 광산)

그리고 테이블 잘라 내기 문은 DDL 문이다.

+0

@Smit - 선택 문제가 아닙니다. OP는 "오류가 절단 테이블 dbo.Link에 있음"을 나타냅니다. – rgettman

+0

와우. 엄청 고마워. 나는 그것을 보지 못했다. – Huzaifa

+0

@rgettman 이전 댓글은 답변을 업데이트하기 전에 유효합니다. 나는 그 주석을 삭제할 것이다. – Smit

관련 문제