SQLite 中的臨時內存數據庫 (Temporary in-memory database in SQLite)


問題描述

SQLite 中的臨時內存數據庫 (Temporary in-memory database in SQLite)

Is it possible somehow to create in-memory database in SQLite and then destroy it just by some query?

I need to do this for unit testing my db layer. So far I've only worked by creating normal SQLite db file and delete if after all tests, but doing it all in memory would be much better. 

So is it possible to instanciate database only in memory without writing anything to disc?  I can't use just transactions, because I want to create whole new database.


參考解法

方法 1:

Create it with the filename ":memory:": In-Memory Databases.

It'll cease to exist as soon as the connection to it is closed.

方法 2:

As an alternative to in memory databases, you can create a SQLite temporary database by using an empty string for the filename. It will be deleted when the connection is closed. The advantage over an in-memory database is your databases are not limited to available memory.

Alternatively, you can create your database in a temp file and let the operating system clean it up. This has the advantage of being accessible for inspection.

方法 3:

I'd suggest mounting a tmpfs filesystem somewhere (RAM only filesystem) and using that for your unit tests.

Instantiate DB files as normal then blow them away using rm - yet nothing has gone to disk.

(EDIT: Nice - somebody beat me to a correct answer ;) Leaving this here as another option regardless)

(by Jakub ArnoldChad BirchSchwernMikeyB)

參考文件

  1. Temporary in-memory database in SQLite (CC BY-SA 3.0/4.0)

#jdbc #sqlite






相關問題

在不啟動事務的情況下通過 Hibernate 對 MySQL 數據庫運行查詢意味著什麼? (What are the implications of running a query against a MySQL database via Hibernate without starting a transaction?)

Праблема з заявай аб абнаўленні Java (Java Update statement issue)

我的 Jar 應用程序(myapplication.jar + Mysql 連接器)在其他計算機上不起作用 (My Jar application(myapplication.jar + Mysql connector) doesnt work on other computer)

executeBatch JDBC 的堆大小錯誤 (Heapsize error with executeBatch JDBC)

格式為“07-apr-2016”的 Java 日期字符串在轉換為 sqldate 時會產生錯誤的結果 (A Java date string in the format "07-apr-2016" produces wrong result when converted to sqldate)

SQLite 中的臨時內存數據庫 (Temporary in-memory database in SQLite)

Websphere 6.1 中的 SQL 日誌記錄 (SQL logging in Websphere 6.1)

我在哪裡可以下載 MySQL Connector/J 的源代碼 (Where can I download source for MySQL Connector/J)

'用戶必須在 weblogic 重新啟動時提供 JDBC 連接' ('The user must supply a JDBC connection' on weblogic restart)

配置 Jetty 6 以使用 commons.dbcp 數據源 (Configuring Jetty 6 to use commons.dbcp datasource)

在netbeans上訪問mysql (Access mysql on netbeans)

spark中的jdbc更新語句 (Jdbc update statement in spark)







留言討論