我有一种情况,用户以 SQL 格式输入一些验证输入。此 SQL 查询仅使用基本的 sql 日期函数,但不使用任何数据库列。示例查询:Select UNIX_TIMESTAMP(NOW()) < UNIX_TIMESTAMP(CASE WHEN DAYOFMONTH(NOW()) <= 10THEN add_MONTHS(DATE_ADD(NOW(), (-1*DAYOFMONTH(NOW()))+1),-1)ELSE DATE_ADD(NOW(), (-1*DAYOFMONTH(NOW()))+1) END)当我将连接对象配置到某个真实数据库时,我可以运行它。但我不觉得为了这个目的而使用数据库和管理它是不值得的。有没有一种方法可以在我的代码中执行这些类型的查询或查询,例如 select date() from dual 等。
2 回答
GCT1015
TA贡献1827条经验 获得超4个赞
坦率地说,如果您要进行 SQL 数据库查询……通常最好有一个数据库来查询:)
此外,如果您的目的是“测试”您的查询......因为许多事情都是特定于数据库的 - 通常最好有一个您希望测试的实际数据库的实例。
话虽如此,在没有底层数据库的情况下执行 SQL 有很多选择:
您可以使用在线“fiddle”来测试 SQL 查询,例如SQLFiddle.com
对于单元测试,您将使用模拟框架。例如,对于 Java/JUnit,我会使用Mockito。
如果我正在测试 Spring/Hibernate 数据访问,我会使用内存中的轻量级H2数据库。
真的有很多很多的选择。这一切都取决于您的特定“用例”;你真正想要完成的事情。
PS:
我给出了一些 Java 示例。这是一篇关于模拟 Microsoft/EF 数据调用的文章:
https://entityframework.net/how-to-mock-data
繁花如伊
TA贡献2012条经验 获得超12个赞
不,sql 查询需要针对数据库引擎运行。
例如 select date() from dual 是一个 oracle 查询;你不能对 mssql 或 mysql 运行它。
添加回答
举报
0/150
提交
取消