2012-08-31 30 views
6

Tôi đang sử dụng System.Data.SQLite.dll để tận dụng cơ sở dữ liệu trong bộ nhớ SQLite. Sau khi chương trình kết thúc, tôi muốn đổ cơ sở dữ liệu trong bộ nhớ vào một tệp .db3 để sử dụng tiếp theo. Làm thế nào tôi có thể đạt được điều này trong C#?Làm thế nào để kết xuất cơ sở dữ liệu trong bộ nhớ SQLite vào tệp với ADO.NET?

+0

làm rõ xin vui lòng ... – Hassanation

+0

Tôi muốn mã hóa như: using (var conn = new SQLiteConnection("Data Source=:memory:") { conn.Open(); // do insert, update... // how to dump data into a file? conn.Close(); } xiagao1982

Trả lời

5

Theo hiểu biết tốt nhất của tôi, không có chức năng tích hợp để thực hiện việc này trong System.Data.SQLite.dll. Tuy nhiên, chức năng này tồn tại trong máy khách sqlite3.exe được duy trì cùng với lõi SQLite.

Đây là cách tôi sẽ làm điều đó với system.data.sqlite.dll:

  1. Lấy câu lệnh SQL để tạo ra cấu trúc cơ sở dữ liệu mới.

    select sql from sqlite_master where name not like 'sqlite_%'; 
    
  2. Lấy tên của tất cả các bảng người dùng.

    select name 
    from sqlite_master 
    where type='table' and name not like 'sqlite_%'; 
    
  3. Tạo cơ sở dữ liệu trên đĩa trong một số kết nối SQLite mới.

  4. Thực hiện tất cả các câu lệnh SQL thu được trước đó để tạo cấu trúc cơ sở dữ liệu trong cơ sở dữ liệu trên đĩa.

  5. Đóng kết nối riêng với cơ sở dữ liệu trên đĩa.

  6. Đính kèm cơ sở dữ liệu trên đĩa vào cơ sở dữ liệu trong bộ nhớ.

    attach 'ondisk.db3' as 'ondisk'; 
    
  7. Đối với mỗi bảng người dùng thu được trước đó, hãy sao chép nội dung từ bộ nhớ trong vào cơ sở dữ liệu trên đĩa.

    insert into ondisk.TableX select * from main.TableX; 
    insert into ondisk.TableY select * from main.TableY; 
    
Các vấn đề liên quan