Tôi đang làm việc trên một ứng dụng Android sẽ cần một số mục (một bảng, với 1000-10000 hàng) được điền trong cơ sở dữ liệu của ứng dụng đó trước khi người dùng có thể sử dụng ứng dụng đó. Tôi đã xem xét một số hướng dẫn và tôi không chắc chắn cách tốt nhất để làm điều này. Tôi có nên kiểm tra xem cơ sở dữ liệu có tồn tại mỗi khi ứng dụng được khởi động hay không, nếu nó không có ở đó, hãy tạo và chèn hàng nghìn bản ghi mà tôi cần? Hoặc là có một cách tốt hơn để xử lý vấn đề này? Lý tưởng nhất, nó có thể được bao gồm như là một phần của quá trình cài đặt của ứng dụng, nhưng tôi không chắc chắn nếu điều này là có thể. Bất kì phản hồi nào cũng sẽ được đánh giá cao.Android Pre-Populated Database
Trả lời
Liên kết này có câu trả lời tốt Ship an application with a database
Đây là liên kết được hiển thị là Câu trả lời hay nhất trong câu hỏi SO được tham chiếu. Đó là một bài viết thực sự tuyệt vời về phân phối cơ sở dữ liệu dựng sẵn với ứng dụng Android của bạn: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ –
Tương tự nhưng briefer : http://www.helloandroid.com/tutorials/how-have-default-database –
http: // stackoverflow.com/questions/9109438/using-already-created-database-with-android/9109728 # 9109728 –
cách tôi sẽ đến đây là gửi cơ sở dữ liệu đã được chuẩn bị sẵn trong thư mục nội dung. Bạn có thể thả các tập tin ở đó và sử dụng chúng như chúng. Hãy coi chừng, tuy nhiên, có giới hạn kích thước là 1MB, vì vậy có thể bạn sẽ phải chia nhỏ tệp hoặc nén chúng.
Nén khá tiện dụng và được hỗ trợ tốt bởi chính hệ điều hành.
niềm hy vọng này là của bất kỳ sự giúp đỡ :-)
Giới hạn kích thước là 1 MB. –
JavaDoc từ SQLiteOpenHelper:
Một lớp helper để quản lý cơ sở dữ liệu tạo và quản lý phiên bản. Bạn tạo một lớp con thực hiện onCreate (SQLiteDatabase), onUpgrade (SQLiteDatabase, int, int) và tùy chọn OnOpen (SQLiteDatabase), và lớp này sẽ chăm sóc của mở cơ sở dữ liệu nếu nó tồn tại, tạo ra nó nếu nó không, và nâng cấp nó thành cần thiết. Giao dịch được sử dụng để đảm bảo cơ sở dữ liệu luôn ở trạng thái hợp lý .
Ví dụ, xem lớp NotePadProvider trong ứng dụng mẫu NotePad , trong thư mục mẫu/ của SDK.
Vì vậy, nếu bạn mở rộng lớp này, bạn có 3 phương pháp sẽ được gọi trong một số trường hợp và bạn có thể chọn, phải làm gì. Thats thực hành tốt nhất :)
Dưới đây là một ví dụ về cách tạo và cư một cơ sở dữ liệu, bạn chỉ có thể làm điều này trên các cài đặt ứng dụng, điều này chỉ tạo ra một mục nhập mặc dù vì vậy có thể không hiệu quả cho những gì bạn muốn làm.
private static class settingsDatabaseHelper extends SQLiteOpenHelper{
//SQL String for creating the table required
private static final String CREATE_SETTINGS_TABLE
= "CREATE TABLE tbl_settings(" +
"_ID INTEGER PRIMARY KEY AUTOINCREMENT," +
"VOIPUSERNAME TEXT," +
"VOIPAUTHID TEXT," +
"PASSWORD TEXT," +
"VOIPDISPLAYNAME TEXT," +
"SIPPROXYSERVER TEXT," +
"SIPREGISTRAR TEXT," +
"SIPREALM TEXT," +
"EXPIRESTIME INTEGER);";
//constructor
public settingsDatabaseHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_SETTINGS_TABLE);
ContentValues initialValues = new ContentValues();
initialValues.put("VOIPUSERNAME", "xxxxx");
initialValues.put("VOIPAUTHID", "xxxxxxxxxx");
initialValues.put("PASSWORD", "xxxxxx");
initialValues.put("VOIPDISPLAYNAME", "xxxxxxxxx");
initialValues.put("SIPPROXYSERVER", "xxxxxxxxxxxxx");
initialValues.put("SIPREGISTRAR", "xxxxxxxxxxx");
initialValues.put("SIPREALM", "xxxxxxxxxx");
initialValues.put("EXPIRESTIME", xxxxxxxxxxx);
Log.d("1.6", "gets to here");
db.insert(SETTINGS_TABLE, null, initialValues);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to " +
newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + SETTINGS_TABLE);
onCreate(db);
}
}
//end helper class
}
Giải thích cho phiếu bầu xuống vui lòng? –
Tôi làm cách nào để thực hiện điều này 'trên cài đặt ứng dụng?' Đây có phải là phần mã được thực thi chỉ khi cài đặt không? –
- 1. Database Connections và F #
- 2. cư TreeView từ DataBase
- 3. Đóng Database Connections trong Java
- 4. SQL lệnh Add Database Diagramming
- 5. Visual Studio 2008 Database Project tạo ALTER DATABASE trong khi so sánh lược đồ
- 6. django auto sên trong các hình thức mô hình như prepopulated-trường trong django quản trị
- 7. Tôi có thể kết nối Apache Derby DataBase với ứng dụng Android không?
- 8. Grails Database Migration vấn đề Plugin
- 9. Sitecore Cleanup Agent và Database Cleanup
- 10. Cập nhật Lỗi Database Dòng CodeIgniter
- 11. File Read/Write vs Database Đọc/Ghi
- 12. Giới thiệu về Code First Database Evolution (aka Migrations)
- 13. Sử dụng Postgres Multiple Schema Database trong Rails
- 14. Sử dụng PublishProfile trong MSBuild for Database Project
- 15. Thả một bảng với Visual Studio 2010 Database Project
- 16. HowTo xóa Database ConnectionStrings được lưu trữ trong Visual Studio?
- 17. Multi-to-many multi-database tham gia với Flask-SQLAlchemy
- 18. Tìm một đối tượng trong SQL Server (cross-database)
- 19. . Ứng dụng mạng không thể kết nối với DB2 DataBase
- 20. Lệnh SỬ DỤNG DATABASE trên SQL PLUS ORACLE 11gr1
- 21. Generics and database - một vấn đề thiết kế
- 22. Tại sao EF DataBase đầu tiên không sử dụng getdate()?
- 23. cách duyệt các bản ghi DataBase của tôi trên Heroku
- 24. Cách tạo dữ liệu Con trỏ mà không nhận dữ liệu từ ứng dụng DataBase trong Android?
- 25. TẠO DATABASE bằng cách sử dụng tệp theo đường dẫn mặc định
- 26. Oracle Database nhập khẩu tập tin sql bởi dấu nhắc lệnh
- 27. thêm "Microsoft Access Database Engine 2010 Redistributable" làm điều kiện tiên quyết cho clickonce
- 28. Lệnh CREATE DATABASE không được phép trong giao dịch đa lệnh
- 29. Database rắc rối trong Django: không thể đặt lại vì phụ thuộc
- 30. Bạn có thể giới thiệu một PostgreSQL Visual Database Designer cho Linux không?
http://stackoverflow.com/a/9109728/265167 –
Tôi không muốn đăng câu trả lời này vì nó không thực sự. Xem xét viết Java để xây dựng cơ sở dữ liệu _on Android_ (ví dụ: từ tệp CSV được đẩy với ADB). Sau đó, nén nó vào '/ asset' để cài đặt. Đang cố gắng khớp chính xác với những gì mà Android mong đợi trong môi trường không phải Android đã khiến tôi trở thành một bước xây dựng mong manh. – Gene
@ JonDiY212 HTML không hợp lệ trong liên kết của bạn. – Noumenon