Java 删除Derby数据库中的所有表

Java 删除Derby数据库中的所有表,java,sql,jdbc,derby,Java,Sql,Jdbc,Derby,如何使用JDBC删除Apache Derby DB上模式中的所有表?我认为大多数DB提供程序不允许删除表*(或类似内容) 我认为最好的方法是显示表,然后通过resultset在循环中完成每次删除 HTH.在java中执行一个小方法 DROP TABLE [tablename] tablename通过参数传递 另一种方法是循环查询形成的记录集 SELECT tablename FROM SYSTABLES 调用第一个方法 JDBC允许您以与数据库无关的方式解决任务: 打开连接 获取数据库元数据

如何使用JDBC删除Apache Derby DB上模式中的所有表?

我认为大多数DB提供程序不允许删除表*(或类似内容)

我认为最好的方法是显示表,然后通过resultset在循环中完成每次删除


HTH.

在java中执行一个小方法

DROP TABLE [tablename]
tablename
通过参数传递

另一种方法是循环查询形成的记录集

SELECT tablename FROM SYSTABLES
调用第一个方法


JDBC允许您以与数据库无关的方式解决任务:

  • 打开连接
  • 获取数据库元数据
  • 使用它列出数据库中的所有表
  • 迭代resultset并为每个表触发DROP表
  • 必须从Derby DB系统目录生成架构和表名
  • 按关系对所有表进行排序
  • 为drop all表生成java语句
  • 使用autoCommit()方法并将此方法设置为false。用于在出现错误时手动提交或回滚事务
  • 运行java进程。 祝你好运

  • 一个更简单的解决方案是使用JDBC运行“drop database foo”,然后“create database foo”。但是,这将导致数据库中的所有对象被删除(即不仅仅是表)。

    对于执行此操作的实际代码,请查看Derby发行版的Derby测试套件部分。

    如果您是从命令提示符而不是通过JDBC工作,这应该可以让您开始

    SELECT 'DROP TABLE ' || schemaname ||'.' || tablename || ';'
    FROM SYS.SYSTABLES
    INNER JOIN SYS.SYSSCHEMAS ON SYS.SYSTABLES.SCHEMAID = SYS.SYSSCHEMAS.SCHEMAID
    ;
    

    一个简单的解决方案是右键单击->断开连接,然后删除包含数据库的文件夹并重新连接。

    连接到数据库

    展开表节点

    选择要删除的表

    右键单击并选择->脚本->删除表脚本

    运行生成的查询

    您甚至可以选择“删除记录”以清空所选表。

    感谢您:

    步骤1: 运行SQL语句,但不要忘记在以下两个实例中用您的架构名称替换架构名称“APP”:

    SELECT
    'ALTER TABLE '||S.SCHEMANAME||'.'||T.TABLENAME||' DROP CONSTRAINT '||C.CONSTRAINTNAME||';'
    FROM
        SYS.SYSCONSTRAINTS C,
        SYS.SYSSCHEMAS S,
        SYS.SYSTABLES T
    WHERE
        C.SCHEMAID = S.SCHEMAID
    AND
        C.TABLEID = T.TABLEID
    AND
    S.SCHEMANAME = 'APP'
    UNION
    SELECT 'DROP TABLE ' || schemaname ||'.' || tablename || ';'
    FROM SYS.SYSTABLES
    INNER JOIN SYS.SYSSCHEMAS ON SYS.SYSTABLES.SCHEMAID = SYS.SYSSCHEMAS.SCHEMAID
    where schemaname='APP';
    
    步骤2:
    上述执行的结果是一组SQL语句,将它们复制到SQL编辑器中,执行它们,然后删除约束和表。

    您可能正在查找--它包含删除单个数据库(而不是给定连接中的所有用户数据库)的实际dropSchema()方法.我编辑了我的答案,以更正Derby 10.15之后源代码新布局的链接位置。另外,前面评论中的链接也有同样的问题,现在应该有一些删除顺序。