删除Derby DB中的所有表
如何使用JDBC删除Apache Derby DB上架构中的所有表?
对于执行此操作的实际代码,请检查Derby分发的Derby测试套件部分中的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允许您以数据库无关的方式解决您的任务:
- 打开连接
- 抓住DatabaseMetaData
- 使用它列出数据库JavaDoc中的所有表
- 迭代结果集并为每个表触发DROP TABLE
- 您必须从Derby DB系统目录生成模式和表名。
- 按关系排序所有表。
- 生成用于删除所有表的java语句
- 使用autoCommit()方法并将此方法设置为false。 遇到错误时进行手动提交或回滚事务。
- 运行java进程。 祝好运。
一个更简单的解决方案是使用JDBC运行“drop database foo”然后“create database 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节点。
选择要删除的表。
右键单击并选择 – >脚本 – >删除表脚本
运行生成的查询
您甚至可以选择删除记录来清空所选表。
- 当指定为1时,Derby Auto递增100
- 如何在JSP中将值插入数据库到derby?
- Apache Derby – java.sql.SQLException:无法启动数据库
- 未找到Derby嵌入式数据库’APPDATA’文件夹,尝试创建OS X应用程序.app
- 用于从JavaDB数据库中选择常量字段值的语法是什么?
- Java SQLexception无效的游标状态 – 没有当前行
- java.lang.ClassNotFoundException:org.apache.derby.jdbc.EmbeddedDriver
- JavaFX + Hibernate(JPA)持久性+ Derby DB
- 以编程方式启动Derby