2013-02-04 49 views
6

Im đang thực hiện một ứng dụng sử dụng cơ sở dữ liệu sqlite Có một tính năng trong ứng dụng của tôi có nút 'Cập nhật cơ sở dữ liệu'.Cách thay thế tệp cơ sở dữ liệu sqlite hiện có bằng tệp cơ sở dữ liệu mới trong android

Khi người dùng nhấp vào nút 'Cập nhật cơ sở dữ liệu', tôi cần phải nâng cấp tệp db cũ bằng tệp db mới từ URL.

Cách thực hiện việc này. nghiên cứu cho tôi biết rằng chúng tôi không thể thay đổi một db vì nó được đặt trong một tệp .apk. Có giải pháp nào cho việc này không. Xin hãy giúp tôi. Cảm ơn bạn.

+0

http://stackoverflow.com/questions/9109438/how-to-use-an-existing-database-with-an-android-application/9109728#9109728 –

Trả lời

0

Khi khởi chạy ứng dụng đầu tiên, bạn nên sao chép cơ sở dữ liệu của mình vào bộ nhớ ngoài/bộ nhớ trong, ngoài tệp APK. Khi bạn cần cập nhật (với câu lệnh hoặc bằng cách thay thế toàn bộ db), bạn có thể hoạt động trong bộ nhớ trong/bộ nhớ ngoài mà không gặp vấn đề gì. Khi bạn cập nhật ứng dụng của mình (và có thể ứng dụng mới có một db mới bên trong), tại lần khởi chạy đầu tiên của ứng dụng mới, bạn nên thay thế db bạn đã lưu trong bộ nhớ trong/bộ nhớ ngoài.

3

Đơn giản chỉ cần bạn có thể tải file db từ URL sử dụng Download Manager và sao chép các tập tin vào con đường này

  /data/data/<YOUR PACKAGE NAME>/databases/ 

Nó sẽ tự động update.I đã sử dụng này và đang làm việc

+0

Hi ... tôi đang mắc kẹt với cùng một vấn đề .. bất kỳ đoạn mã cho dis ??? – ryderz8

+1

Anh ấy đang nói sao chép dữ liệu trực tiếp vào thư mục cho ứng dụng. Tệp foo.db cho ứng dụng của bạn nằm trong mẫu thư mục ở trên. Tuy nhiên trong trường hợp của tôi, tôi không có một thiết bị bắt nguồn từ để tôi sẽ không thể truy cập vào thư mục databse. Bạn có thể chỉ cần tạo một cái mới. Tôi giải quyết nó với IO đơn giản, câu trả lời khác. – StarWind0

+0

Tôi có nên làm điều gì đó với tệp " .db-journal" trong đó, như xóa nó không? –

3
private void importDatabase(String inputFileName) throws IOException 
{ 
    InputStream mInput = new FileInputStream(inputFileName); 
    String outFileName = YOUR_DB_PATH_HERE; 
    OutputStream mOutput = new FileOutputStream(outFileName); 
    byte[] mBuffer = new byte[1024]; 
    int mLength; 
    while ((mLength = mInput.read(mBuffer))>0) 
    { 
     mOutput.write(mBuffer, 0, mLength); 
    } 
    mOutput.flush(); 
    mOutput.close(); 
    mInput.close(); 
} 

CHỈNH SỬA:

Bạn có thể thấy nó hữu ích:

How to use an existing database with an Android application

+0

Làm việc như một sự quyến rũ! Lưu ý cho người khác. Tôi cho phép phục hồi với cùng một mã. Một bản sao đơn giản của nó chức năng tập tin này sau khi tất cả. – StarWind0

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