0

I have a situation where the user enters some validation input in SQL format. This SQL query is just using basic sql date functions but not using any databse column. Sample query:

Select UNIX_TIMESTAMP(NOW()) < UNIX_TIMESTAMP(CASE WHEN DAYOFMONTH(NOW()) <= 10
THEN add_MONTHS(DATE_ADD(NOW(), (-1*DAYOFMONTH(NOW()))+1),-1)
ELSE DATE_ADD(NOW(), (-1*DAYOFMONTH(NOW()))+1) END)

I am able to run this when i have a connection object configured to some real database. But i do not find it worth to use a database and manage it just for this purpose. Is there a way where i can execute these type of queries or queries like select date() from dual etc in my code.

4

2 回答 2

1

坦率地说,如果您要进行 SQL 数据库查询……通常最好有一个数据库来查询:)

此外,如果您的目的是“测试”您的查询......因为许多事情都是特定于数据库的 - 通常最好有一个您希望测试的实际数据库的实例。

话虽如此,在没有底层数据库的情况下执行 SQL 有很多选择:

  • 您可以使用在线“fiddle”来测试 SQL 查询,例如SQLFiddle.com

  • 对于单元测试,您将使用模拟框架。例如,对于 Java/JUnit,我会使用Mockito

  • 如果我正在测试 Spring/Hibernate 数据访问,我会使用内存中的轻量级H2数据库。

真的有很多很多的选择。这一切都取决于您的特定“用例”;你真正想要完成的事情。

PS:

我给出了一些 Java 示例。这是一篇关于模拟 Microsoft/EF 数据调用的文章:

https://entityframework.net/how-to-mock-data

于 2019-01-24T07:01:19.727 回答
-1

不,sql 查询需要针对数据库引擎运行。

例如 select date() from dual 是一个 oracle 查询;你不能对 mssql 或 mysql 运行它。

于 2019-01-24T06:52:36.273 回答