我想测试一个使用SQLite JDBC驱动程序的手写DAO。我的计划是将版本控制中的模式和数据插入保存为.sql文件,并在测试之前执行它们以获得可用于测试的填充数据库。
使用JDBC搜索执行整个sql脚本的解决方案,发现了一堆Stackoverflow线程,说它不可能并提供一些解析脚本将sql脚本拆分为单独的sql语句(SQLScriptRunner)。
这些帖子大多是3岁以上,所以我想知道是否仍然没有#34; easy"使用JDBC API执行sql脚本的方法。
我问,因为SQLite为我提供了从现有数据库克隆数据库的选项,我更喜欢使用大型脚本执行器实现(执行器可能比我的所有数据访问代码组合更大)
那么,是否有一种简单易用的方法来使用JDBC执行sql脚本,还是只能使用一些解析脚本?
答案 0 :(得分:1)
我猜Spring Framework ScriptUtils
可能会为你做这个技巧。
请检查
我的计划是将架构和数据插入版本控制中 作为.sql文件并在测试之前执行它们以获得填充 我可以用来测试的数据库。
为此目的,有一个像 DbUnit http://dbunit.sourceforge.net/
这样的库我个人觉得如果没有适当的包装,我会发现它有点棘手。
其中一些包装:
Spring Test DbUnit https://springtestdbunit.github.io/spring-test-dbunit/
Unitils DbUnit http://www.unitils.org/tutorial-database.html
答案 1 :(得分:0)
虽然不是"开箱即用" JDBC解决方案,我倾向于使用SqlTool。它对HSQLDB特别友好,但它可以与(几乎?)任何JDBC驱动程序一起使用。 (文档显示了如何连接PostgreSQL,SQL Server,Oracle,Derby等的示例。)它可以通过Maven获得,而JAR文件只有~150KB。有关如何使用它运行SQL脚本的示例,请参阅我的其他答案here。
关于拟议的Spring" ScriptUtils"解决你问题中的评论......
我更喜欢[其他解决方案]而不是使用大型Script-Executer实现(执行者可能比我的所有数据访问代码组合更大)。
...请注意spring-jdbc
的依赖项包括spring-core
,spring-beans
,spring-tx
和commons-logging-1.2
,总计约2.5MB。这比SqlTool JAR文件大15倍,并且它甚至不包含任何额外的DbUnit"包装器"可能需要或可能不需要使ScriptUtils更容易使用。