Sunday, May 31, 2015

Copy file Database từ thư mục Asset trong Android để sử dụng


Chào mọi người, đang làm cái ứng dụng này thì thấy có chức năng hay hay nên hôm nay mình chia sẻ mọi người. Đó là copy file Database được xây dựng sẵn từ thư mục Asset trong Android để sử dụng. Cách này thường dùng cho lập trình các ứng dụng dạng sách đọc. Xây dựng sẵn Database rồi copy vào khi cài đặt là xong.

1. Cấu trúc Project

Sau khi xây dựng xong cái database ở ngoài bằng ứng dụng SQLite Expert (trên Windows) hoặc Sqliteman (Trên Linux) với cấu trúc (tui sử dụng SQLiteman)

Sau đó copy vào thư mục assets, bạn có thể nhìn hình cấu trúc Project của tui ở trên có khung màu đỏ đấy.

2. Thưc hiện copy (File AssetDatabaseOpenHelper.java)




3. Đọc file database sau khi copy (file DbHelpter.java)


4. Thực hiện hiển thị lên màn hình (Main.java)


5. Giao diện hiển thị, đơn giản là một listView




6. cho phép ứng dụng của bạn được đọc ghi file vào bộ nhớ (File AndroidManifest.xml)

Thêm 2 dòng vào AndroidManifest

được như sau:

7. Chạy thử.

Sau khi chạy sẽ thấy

Sẽ thấy trong File Explorer theo đường dẫn data/data/yourpackage/databases

Download project.

Thế là xong chức năng copy file database xây dựng sẵn từ thư mục assets và sử dụng. Chúc bạn thành công. Mọi thắc mắc gì bạn comment ở dưới, tui sẽ hỗ trợ trong khả năng của tui.

4 comments :

  1. Mình bị lỗi copy sang thư mục database, kieemr tra DDMS thấy size dữ liệu=0

    ReplyDelete
    Replies
    1. Cám ơn bạn đã đọc bài của mình. Bạn có thể ghi rõ lỗi ra được không. lúc run xem ở Logcat đấy.
      - Bạn xem thử trong AndroidManifest.Xml có khai báo quyền đọc ghi vào bộ nhớ máy không?
      - Xem thử package ở dòng 24 có giống dòng 3 trong AndroidManifest.Xml (code ở trên)
      - Bạn xem tên file database có đúng trong thư mục asset không. xem dòng 15 của file AssetDatabaseOpenHelper.java (code ở trên)
      bạn có thể tải Source code ở cuối của mình về chạy thử nhé

      Delete
  2. Cám ơn bạn! Bài viết của bạn rất hay, mình sử dụng source code của bạn , riêng phần lấy dữ liệu thì mình modify đi ^^!.
    Lúc đầu việc hiển thị không gặp vấn đề gì bạn ạ, nhưng khi dữ liệu của database lớn thì việc copy từ folder asset sang gặp trục trặc.Cụ thể là CT không copy được dữ liệu sang thư mục databases(khi dữ liệu mình là 1,7 MB), khi mình thử với dữ liệu là 600 KB thì lại ngon lành.
    Như vậy lỗi CT của mình là khi dữ liệu của file SQLite quá lớn ^^.Mình sẽ dùng zipstream để xử lý!

    ReplyDelete
    Replies
    1. Cám ơn bạn nhé, Mình chưa gặp tình trạng này, nếu fix được bạn chia sẻ cho mình qua mail nhá. Mình sẽ bổ sung vào bài viết để hoàn thiện hơn.

      Delete

Copyright © 2014 TutsModel | All Rights Reserved