Tôi đang cố tải một cơ sở dữ liệu SQLite sẽ được nhúng vào tệp thực thi của tôi dưới dạng tài nguyên. Đối với những người tò mò, đó là vì tôi sử dụng một cơ sở dữ liệu SQLite nhỏ để lưu trữ dữ liệu cấu hình và tôi muốn gửi cấu hình mặc định được nhúng bên trong tệp thực thi (tôi ghét phải mang theo tệp cùng với một chương trình).Đang tải cơ sở dữ liệu SQLite từ luồng byte trong .NET
Đây chỉ là cấu hình mặc định. Đó là, tôi không cần phải sửa đổi cấu hình này. Nó là tĩnh và không thể thay đổi sau khi chương trình của tôi đã được xây dựng.
Tôi đang sử dụng trình bao bọc System.Data.SQLite cho SQLite.
tôi có thể nhận được quyền truy cập vào một dòng byte như thế này:
using (var stream =
Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) {
// use of "stream" here.
}
Tuy nhiên, tôi đang ở một mất mát liên quan đến việc tạo ra một đối tượng SQLiteConnection
từ dòng này.
Cách dễ dàng nhất là chỉ sinh ra tệp cấu hình mới mỗi khi chương trình tải, sau đó yêu cầu SQLite đọc từ tệp đó. Điều này có thể làm việc, nhưng tôi muốn tránh kỹ thuật đó - tôi dự định sử dụng lại giải pháp của mình cho vấn đề này cũng bao gồm hỗ trợ quốc tế hóa (mỗi ngôn ngữ là một cơ sở dữ liệu SQLite nén) và ngôn ngữ mặc định được nhúng trong tệp thực thi người dùng có thể thêm các ngôn ngữ khác của tôi chỉ đơn giản là sao chép cơ sở dữ liệu ngôn ngữ khác vào thư mục làm việc của chương trình).
Tôi không quan tâm đến chi phí bộ nhớ khi giữ cơ sở dữ liệu này trong bộ nhớ. Nó sẽ rất nhỏ (có thể ít hơn 50 KiB), vì vậy mà không làm phiền tôi. Rõ ràng nếu đây là một cơ sở dữ liệu lớn hơn, điều này có thể là một vấn đề.
Cuối cùng, tôi biết rằng điều này có thể được xem là cách kém để lưu trữ cấu hình. Mặc dù tôi đồng ý rằng giải pháp dựa trên văn bản thuần túy là tốt cho các trường hợp khi người dùng nhập tất cả cài đặt của mình theo cách thủ công, điều này chủ yếu được sử dụng cho cài đặt mà người dùng không xác định rõ ràng. Ví dụ, để lưu trữ các vị trí của các cửa sổ ghép nối khác nhau trong một ứng dụng, hoặc để lưu trữ dữ liệu về nơi các nguồn nội bộ có thể được tìm thấy.
Cảm ơn sự giúp đỡ của bạn.
7 năm sau và tự hỏi liệu bạn có bao giờ có giải pháp cho phép bạn lưu một db lite sql vào nhị phân từ bộ nhớ hoặc tải nó từ luồng không? – lucuma