2010-08-11 37 views
5

Tôi đang sử dụng SQLite trong một dự án được ứng dụng Android sử dụng. Hiện tại tôi đang sử dụng triển khai SQLite được cung cấp trong android.database.sqlite.JDBC di động và SQLite trên Android

Tôi muốn tạo một ứng dụng dành cho máy tính để bàn sử dụng cùng một cơ sở mã. Vì vậy, tôi cần phải tách tất cả các hành vi được chia sẻ thành một dự án di động riêng biệt/jar.

Vấn đề của tôi hiện đang sử dụng nhiều là android.database.sqlite. Nếu có thể, tôi không muốn viết lại mọi lời gọi truy cập cơ sở dữ liệu để tương thích với JDBC hoặc bất cứ thứ gì tôi sẽ phải sử dụng mà không sử dụng SQLite được cung cấp bởi android.

Để giải quyết vấn đề này với tác động tối thiểu trên mã hiện có. Tôi có ý định viết một giao diện SQLite (tương thích với android.database.sqlite) mà mã chia sẻ sẽ sử dụng ... trên android nó sẽ được thực hiện một cách trivially android.database.sqlite và trên màn hình, nó sẽ được thực hiện bằng cách nào đó làm giảm SQLite thông qua JDBC để khớp với android.database.sqlite.

Điều này chứng tỏ khó khăn vì tôi thường cung cấp các mảng Object[] để bị ràng buộc vào các câu lệnh chuẩn bị mà JDBC yêu cầu nhập nghiêm ngặt và tôi không quen thuộc với JDBC chút nào. Có cách nào khác để sử dụng SQLite trong Java tương tự như android.database.sqlite hoặc bất kỳ cách tiếp cận nào khác có thể giúp tôi tiết kiệm nỗ lực (và gỡ lỗi không thể tránh khỏi) liên quan đến việc viết lại nhiều điểm truy cập cơ sở dữ liệu không? Không.

Disclamer: Tôi chưa bao giờ cho đến bây giờ thử dùng JDBC.

Câu hỏi đơn giản: Cách tốt nhất để sử dụng SQLite trong java là gì? JDBC, khác?

Trả lời

3

Tôi nghĩ việc tạo trình bao bọc sẽ là một ý tưởng hay, nhưng có thể liên quan đến rất nhiều nỗ lực về phát triển cũng như thử nghiệm. Có thể bạn có thể bắt đầu một dự án trên google và nhận thêm một vài người nữa.

Trên một mặt lưu ý, tôi tin rằng có đã là một dự án như vậy trên google mã được gọi là sqldroid

+0

Cảm ơn bạn đã liên kết, có vẻ đầy hứa hẹn. Tôi đã nghĩ đến việc làm cho giao diện ngược lại 'JDBC trông giống như SQLite', ngược lại với cái khác, mà dường như không thể thực hiện được. – Akusete

0

Bạn có thể tạo một cái gì đó giống như một DataMapper cho tên miền của bạn để mở rộng mô hình TCN đến BCDE. Vai trò của một ánh xạ dữ liệu là trừu tượng từ công nghệ cơ sở dữ liệu cơ bản để tăng sau tái sử dụng

1

Dưới đây là những gì tôi sẽ làm gì:

  1. Tạo một giao diện cho các hoạt động cơ sở dữ liệu. Nó sẽ bao gồm các phương thức để thêm, sửa đổi, xóa các bản ghi và lưu/cam kết nếu được yêu cầu. Giao diện này có thể được mở rộng và khi được yêu cầu.
  2. Tạo triển khai cho JDBC/SQLite. Có mục nhập cấu hình để chọn triển khai phù hợp tốt nhất vào thời gian xây dựng.

Điều này có nghĩa trong trường hợp của bạn là:

  1. Tạo giao diện.
  2. Tạo triển khai thực hiện nội bộ sử dụng SQLite.
  3. Tạo triển khai thực hiện nội bộ sử dụng một số triển khai JDBC.

Bằng cách này, ứng dụng của bạn sẽ trở nên trừu tượng hóa từ cơ sở dữ liệu cơ bản đang được sử dụng. Điều này sẽ cải thiện tính di động.

+0

Tôi không chắc chắn nếu bạn có nghĩa là một giao diện tên miền cụ thể. Nếu vậy thì vấn đề sẽ là tôi sẽ cần phải làm lại các ràng buộc cho từng dự án (suy nghĩ trước). Nếu không, thì một lần nữa có vẻ như một sự lãng phí trong JDBC đó là _supposed_ để chỉ là ... tại sao lại tạo ra bánh xe. Nhưng tôi nghĩ triết lý của bạn là đúng, +1. – Akusete

+0

@Akusete Anh ấy đang nói về mẫu DAO – naikus

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