java中的数据库
我创建了build.xml文件夹,用于创建与java中的数据库,java,ant,jdbc,hsqldb,Java,Ant,Jdbc,Hsqldb,我创建了build.xml文件夹,用于创建与数据库(startdb、stopdb、createtable、droptable、startManager)的连接。…我运行了这个程序,他告诉我,当我按下createtable时,他创建了表,但当我启动startManager时,我看到表不存在……如果有人能帮助我的话 my build.xml: 关闭; 创建表SALARIATII( CNP整数非空主键, NUME VARCHAR(40)不为空, SALAR整数不为空, GRADDIDACTIC
数据库(startdb、stopdb、createtable、droptable、startManager)的连接。
…我运行了这个程序,他告诉我,当我按下createtable时,他创建了表,但当我启动startManager时,我看到表不存在……如果有人能帮助我的话
my build.xml:
关闭;
创建表SALARIATII(
CNP整数非空主键,
NUME VARCHAR(40)不为空,
SALAR整数不为空,
GRADDIDACTIC VARCHAR(256)不为空,
DATANASTERII VARCHAR(40)不为空
);
落桌式萨拉里亚蒂;
从SALARIATII中删除;
在Salariatiii(CNP、NUME、SALAR、Graddidatic、DATANASTERII)中插入值(1,'FLORIN BOIAN',2500,'PROFESOR',07/08/1950');
如果droptables在startManager之前运行,那么它将删除该表,对吗?也许你真的不想运行droptables?Hi,你应该至少在你的问题中添加hsqldb和ant标签,并试着破译一下标题…:)另外,发布您的JDBC URL。它是否包含“:mem:”?我打赌他使用了all
target,它以正确的顺序调用其他目标。没有其他目标依赖于dropables,因此它不会“意外”运行。这是有意义的,因为我们只有Ant构建文件,而不是您如何调用它。您是否只调用all
目标?每个单独的任务都可以由应用程序或脚本调用吗?在这种情况下,正如David所说,可能是在创建和填充表之后,在显示manager之前调用了drop
。此外,在您的all中,当您删除
和创建
表时,空的
是不必要的。
<property file="build.properties" />
<!-- Global properties for this build. -->
<property name="database.dir" value="database" />
<property name="lib.dir" value="lib" />
<!-- Classpath declaration. -->
<path id="lib.class.path">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<!-- Start the HSQL DB server -->
<target name="startdb" description="Run HSQL database server with clean DB">
<!-- Delete database files -->
<delete dir="${database.dir}" />
<java classname="org.hsqldb.Server" fork="yes" classpathref="lib.class.path" failonerror="true">
<arg value="-database.0" />
<arg value="file:${database.dir}/db" />
</java>
</target>
<!-- Start the HSQL DB browser tool -->
<target name="startManager" description="Start HSQL DB manager">
<java classname="org.hsqldb.util.DatabaseManagerSwing" fork="yes" classpathref="lib.class.path" failonerror="true">
<arg value="-url" />
<arg value="${db.url}" />
<arg value="-driver" />
<arg value="${db.driver}" />
</java>
</target>
<!-- Stop the HSQL DB server -->
<target name="stopdb" description="Stop HSQL database server">
<sql driver="${db.driver}" url="${db.url}" userid="${db.user}" password="${db.pw}" onerror="continue">
<classpath refid="lib.class.path" />
SHUTDOWN;
</sql>
</target>
<target name="createTables">
<echo message="CREATE TABLES USING: ${db.driver} ${db.url}" />
<sql driver="${db.driver}" url="${db.url}" userid="${db.user}" password="${db.pw}" onerror="continue">
<classpath refid="lib.class.path" />
CREATE TABLE SALARIATII(
CNP INTEGER NOT NULL PRIMARY KEY,
NUME VARCHAR(40) NOT NULL,
SALAR INTEGER NOT NULL,
GRADDIDACTIC VARCHAR(256) NOT NULL,
DATANASTERII VARCHAR(40) NOT NULL
);
</sql>
</target>
<target name="dropTables">
<echo message="DROP TABLES USING: ${db.driver} ${db.url}" />
<sql driver="${db.driver}" url="${db.url}" userid="${db.user}" password="${db.pw}" onerror="continue">
DROP TABLE SALARIATII;
<classpath refid="lib.class.path" />
</sql>
</target>
<target name="emptyTables">
<echo message="USING: ${db.driver} ${db.url}" />
<sql driver="${db.driver}" url="${db.url}" userid="${db.user}" password="${db.pw}">
<classpath refid="lib.class.path" />
DELETE FROM SALARIATII;
</sql>
</target>
<target name="populateTables">
<echo message="USING: ${db.driver} ${db.url}" />
<sql driver="${db.driver}" url="${db.url}" userid="${db.user}" password="${db.pw}">
<classpath refid="lib.class.path" />
INSERT INTO SALARIATII(CNP, NUME,SALAR,GRADDIDACTIC,DATANASTERII) VALUES ( 1,'FLORIN BOIAN',2500,'PROFESOR', '07/08/1950');
</sql>
</target>
<target name="all" depends="dropTables,createTables,emptyTables,populateTables" />
</project>