# hsqldb und ant



## shr3k (30. Dez 2006)

So, befasse mich gerade mit hsql und ant und bin daran zu verzweifeln. connecten kann ich mich zu der DB aber danach kann ich nichts mehr mit dieser machen, dh weder tabellen hinzuzufügen, oder sonst etwas zu machen. Habe in Ant folgendermaßen begonnen:

```
<project name="DataAccessLayer">
	
	<path id="hsql.classpath">
		<fileset dir="lib">
			<include name="hsqldb.jar"/>
		</fileset>
	</path>
	
	<target name="starting">
		<java classname="org.hsqldb.Server">
			<arg value = "-database.0"/>
			<arg value = "Data/mydb"/>
			<arg value = "-dbname.0"/>
			<arg value = "xdb"/>
			<classpath refid="hsql.classpath" />
		</java>
	</target>
	
</project>
```

Dann kommt halt die Meldung, opend successfully usw

nun möchte ich ein Create machen. Dafür habe ich folgendes target definiert


```
<target name="createTable">
	<java classname="org.hsqldb.util.ScriptTool" fork="yes" >
		<arg value="-url"/>
		<arg value="jdbc:hsqldb:"/>
		<arg value="-database"/>
		<arg value="file:Data/mydb"/>
		<arg value="-script"/>
		<arg value="SQL/createTable.sql" />
		<classpath refid="hsql.classpath" />
	</java>
</target>
```

Das SQL sieht folgendermaßen aus:

```
DROP TABLE test;

CREATE TABLE test(
    id integer identity,
    name varchar(40),
    email varchar(40),
    age integer
);

INSERT INTO test (id, name, email, age) VALUES (1, 'Hans Paul', 'hans@paul.at', 34);
```

Da sagt er mir nur, dass Drop nicht ausgeführt werden kann, weil die Table noch nicht existiert, ok.
Mache ich nun ein target, für das Select (so wie das für createTable, SQL skript ist halt anderes) , sagt er mir, dass die Table nicht existiert, also nicht erzeugt wurde. Das Select sieht einfach nur so aus:

```
SELECT *
FROM test;
```

Was mache ich wo falsch. Komme echt nicht drauf, was falsch ist


----------



## MatthiasKnorr (10. Jan 2007)

Kann es sein, dass der Fehler wegen dem DROP die Abarbeitung des CREATEs und INSERTs verhindert?
Schau mal, ob du irgendwo eine Einstellung "ignore errors" gibt oder teile die verschiedenen Skripte auf.

Grüße,
Matthias


----------



## Guest (10. Jan 2007)

Versuche
	
	
	
	





```
DROP TABLE IF EXISTS test
```
damit das ganze beim ersten mal nicht scheitert.


----------



## shr3k (11. Jan 2007)

Ich habs dann im target mit

```
<sql driver="org.hsqldb.jdbcDriver"
	           url="${hsqldb.url}"
	           classpathref="hsqldb.classpath"
	           userid="${hsqldb.user}"
	           password="${hsqldb.pass}"
	           print="true">
	         <transaction src="sql/create.sql"/>
	      </sql>
```
gelöst


----------

