2010-02-08 2 views
0

ant에서 sqlite 데이터베이스를 만들고 업데이트하기 위해 org.sqlite.JDBC를 사용하려고합니다. sqlitejdbc-v056.jarhttp://www.zentus.com/sqlitejdbc/에서 오는 최신 버전 (056)ant sql task가 org.sqlite.JDBC 드라이버에서 "no ResultSet available"을 던졌습니다.

이 내 build.xml 파일입니다 :

<?xml version="1.0" encoding="utf-8"?> 

<project name="My Project" default="mytarget" basedir="."> 

    <path id="antclasspath"> 
     <fileset dir="_ant"> 
      <include name="*.jar"/> 
     </fileset> 
    </path> 

    <target name="mytarget"> 
     <property name="antclasspathar" refid="antclasspath" /> 
     <echo message="Classpath is ${antclasspathar}"/> 
     <sql 
      driver="org.sqlite.JDBC" 
      url="jdbc:sqlite:C:/Projects/dummy/test.db" 
      userid="" 
      password="" 
      classpathref="antclasspath" 
     > 
      DROP TABLE IF EXISTS people; 
      CREATE TABLE people (name, occupation); 
     </sql> 

    </target> 

</project> 

입니다 출력 내가 얻을 :

C:\Projects\dummy>ant -v 
Apache Ant version 1.7.1 compiled on June 27 2008 
Buildfile: build.xml 
Detected Java version: 1.6 in: C:\Program Files (x86)\Java\jdk1.6.0_10\jre 
Detected OS: Windows Vista 
parsing buildfile C:\Projects\dummy\build.xml with URI = file:/C:/Projects/dummy/build.xml 
Project base dir set to: C:\Projects\dummy 
[antlib:org.apache.tools.ant] Could not load definitions from resource org/apache/tools/ant/antlib.xml. It could not be found. 
Build sequence for target(s) `mytarget' is [mytarget] 
Complete build sequence is [mytarget, ] 

mytarget: 
    [echo] Classpath is C:\Projects\dummy\_ant\sqlitejdbc-v056.jar 
     [sql] connecting to jdbc:sqlite:C:/Projects/dummy/test.db 
     [sql] Loading org.sqlite.JDBC using AntClassLoader with classpath C:\Projects\dummy\_ant\sqlitejdbc-v056.jar 
     [sql] Executing commands 
     [sql] SQL: DROP TABLE IF EXISTS people 
     [sql] Failed to execute: DROP TABLE IF EXISTS people 

BUILD FAILED 
java.sql.SQLException: no ResultSet available 
     at org.sqlite.Stmt.getResultSet(Stmt.java:111) 
     at org.apache.tools.ant.taskdefs.SQLExec.execSQL(SQLExec.java:567) 
     at org.apache.tools.ant.taskdefs.SQLExec.runStatements(SQLExec.java:535) 
     at org.apache.tools.ant.taskdefs.SQLExec$Transaction.runTransaction(SQLExec.java:764) 
     at org.apache.tools.ant.taskdefs.SQLExec$Transaction.access$000(SQLExec.java:706) 
     at org.apache.tools.ant.taskdefs.SQLExec.execute(SQLExec.java:449) 
     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 
     at org.apache.tools.ant.Task.perform(Task.java:348) 
     at org.apache.tools.ant.Target.execute(Target.java:357) 
     at org.apache.tools.ant.Target.performTasks(Target.java:385) 
     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337) 
     at org.apache.tools.ant.Project.executeTarget(Project.java:1306) 
     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 
     at org.apache.tools.ant.Project.executeTargets(Project.java:1189) 
     at org.apache.tools.ant.Main.runBuild(Main.java:758) 
     at org.apache.tools.ant.Main.startAnt(Main.java:217) 
     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257) 
     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104) 

Total time: 0 seconds 

답변

1

DDL (데이터 정의를 언어, 예 : CREATE, DROP 등) 문의 ResultSet을 반환합니다. Ant 스크립트에서 분명히 예상하고 있습니다. . 적어도, SQLException은 기본적으로 당신에게 말하고 있습니다. 개미를 광범위하게하지 않으므로 자세히 처리 할 수 ​​없지만 적어도 스크립트를 변경해야 아니요 반환 값이 예상됩니다.

+0

이것은 DDL 문과 함께 SQL Ant 태스크를 사용할 수 없다는 것을 의미합니다. 내가 원하는 대답이 아닙니다. :-( –

+0

"이 방법이 효과가 없다"고 대답하더라도이 대답을 수락 할 것입니다. 나는 이것이 유일한 정답이라는 것을 두려워합니다. –