2009-05-11 36 views
19

Có thể nào đó tạo cơ sở dữ liệu trong bộ nhớ trong SQLite và sau đó phá hủy nó chỉ bằng một số truy vấn?Cơ sở dữ liệu trong bộ nhớ tạm thời trong SQLite

Tôi cần thực hiện việc này để kiểm tra đơn vị lớp db của tôi. Cho đến nay tôi chỉ làm việc bằng cách tạo tệp db SQLite bình thường và xóa nếu sau tất cả các thử nghiệm, nhưng làm tất cả trong bộ nhớ sẽ tốt hơn nhiều.

Vì vậy, có thể instanciate cơ sở dữ liệu chỉ trong bộ nhớ mà không cần viết bất cứ điều gì vào đĩa? Tôi không thể sử dụng giao dịch chỉ vì tôi muốn tạo cơ sở dữ liệu hoàn toàn mới.

Trả lời

30

Tạo tệp bằng tên tệp ": memory:": In-Memory Databases.

Nó sẽ ngừng tồn tại ngay sau khi kết nối với nó được đóng lại.

+0

wow, thx cho câu trả lời siêu nhanh :) –

+3

Có thể làm việc với cơ sở dữ liệu trong bộ nhớ và sau đó sao chép nó vào đĩa không? (ý tưởng là để * tăng tốc các hoạt động ngăn chặn và tốn thời gian của các tác phẩm *) –

1

Tôi muốn đề xuất lắp hệ thống tệp tmpfs ở đâu đó (hệ thống tệp RAM chỉ) và sử dụng cho các thử nghiệm đơn vị của bạn.

Khởi tạo các tệp DB như bình thường rồi thổi chúng đi bằng rm - nhưng không có gì đã chuyển sang đĩa.

(EDIT: Nice - ai đó đánh tôi đến một câu trả lời đúng;) Rời này ở đây như là một tùy chọn không phân biệt)

2

Để thay thế cho trong cơ sở dữ liệu bộ nhớ, bạn có thể tạo một SQLite temporary database bằng cách sử dụng một chuỗi rỗng cho tên tệp. Nó sẽ bị xóa khi kết nối bị đóng. Lợi thế trên cơ sở dữ liệu trong bộ nhớ là cơ sở dữ liệu của bạn không bị giới hạn trong bộ nhớ có sẵn.

Hoặc, bạn có thể tạo cơ sở dữ liệu trong tệp tạm thời và để hệ điều hành dọn sạch. Điều này có lợi thế là có thể truy cập để kiểm tra.

Các vấn đề liên quan