【问题标题】:Databases in javajava中的数据库
【发布时间】:2011-01-04 14:13:47
【问题描述】:

我创建了我的 build.xml 文件夹,该文件夹创建了与 database(startdb,stopdb,createtable,droptable,startManager) 的连接...我运行它,他告诉我,当我按 createtable 时他创建了表,但是当我启动 startManager 时,我看到表没有存在...如果有人可以帮助我

我的 build.xml:

    <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>

【问题讨论】:

  • 嗨,您应该至少在您的问题中添加 hsqldb 和 ant 标签,并尝试破译一点标题... :)
  • 另外,发布您的 JDBC URL。它是否包含':mem:'?

标签: java ant jdbc hsqldb


【解决方案1】:

如果 droptables 在 startManager 之前运行,那么它会删除该表,对吗?也许你真的不想运行 droptables?

【讨论】:

  • 我打赌他使用了all 目标,它以正确的顺序调用其他目标。没有其他目标依赖于dropables,因此它不会“意外”运行。
  • 是有道理的,因为我们只有 Ant 构建文件,而不是你如何称呼它。你只调用all 目标吗?每个单独的任务都可以由应用程序或脚本调用吗?在这种情况下,正如大卫所说,drop 可能是在创建并填充您的表之后以及在显示您的经理之前调用的。此外,在你所有的dropcreate表中,empty不是必需的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
相关资源
最近更新 更多