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

有帮助吗?

解决方案

对于执行此操作的实际代码,请检查 CleanDatabaseTestSetup.java

其他提示

感谢博客

第1步:

运行SQL语句,但不要忘记在下面的2次出现中将模式名称“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编辑器,执行它们,然后删除约束和表。

在执行

的java中执行一些方法
DROP TABLE [tablename]

tablename 由参数传递。

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

SELECT tablename FROM SYSTABLES

调用第一种方法。

德比最新文档

我认为大多数数据库提供程序不允许DROP TABLE *(或类似)。

我认为最好的方法是SHOW TABLES,然后通过结果集遍历循环中的每个删除。

HTH。

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

  1. 打开连接
  2. 抓住DatabaseMetaData
  3. 使用它列出数据库中的所有表 JavaDoc
  4. 迭代结果集并为每个表激发DROP TABLE
  1. 您必须从Derby DB系统目录中生成架构和表名。
  2. 按关系排序所有表格。
  3. 为drop all tables
  4. 生成java语句
  5. 使用autoCommit()方法并将此方法设置为false。当出现错误时进行手动提交或回滚事务。
  6. 运行java进程。 祝你好运。

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

如果你是从命令提示符而不是通过JDBC工作,那么这应该让你开始。

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

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

http://squirrel-sql.sourceforge.net/ 下载Squirrel SQL

连接数据库。

展开TABLE节点。

选择要删除的表格。

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

运行生成的查询

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top