我有一種情況,用戶以 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
提交
取消