2011-11-20 37 views
5

Có thể đổi tên một cơ sở dữ liệu đã được tạo trong Android không?Android đổi tên Cơ sở dữ liệu SQLite

Trên bản cập nhật ứng dụng của tôi, tôi muốn đổi tên cơ sở dữ liệu cũ và cài đặt mới rồi so sánh một số giá trị và cuối cùng xóa cũ.

Tôi đang tạo bản dựng từ tệp sqlite trong thư mục nội dung. Đây là lý do tại sao tôi không thể đổi tên tất cả các bảng và chèn các bảng mới.

Làm rõ:

Cơ sở dữ liệu cũ sẽ chỉ chứa một bảng mà tôi cần phải so sánh giá trị từ chống lại (từ bản cập nhật) cơ sở dữ liệu mới.

Cả hai cơ sở dữ liệu đã được sao chép từ tệp sqlite trong thư mục nội dung.

Khi tôi đã so sánh giá trị từ cơ sở dữ liệu cũ với mới, tôi sẽ xóa cũ và sử dụng giá trị mới tại vị trí của nó với các giá trị tôi đã so sánh.

Những gì tôi đã nghĩ đến việc làm là đổi tên cũ tạo mới ở vị trí của nó và làm mọi thứ ở trên.

+0

Tại sao các bạn làm điều đó nhiều về những gì về nếu trực tiếp cập nhật cơ sở dữ liệu tại thời điểm cập nhật ứng dụng? – user370305

Trả lời

3

Chúa Flash là đúng, bạn nên xóa các db cũ và copy cái mới ...

Giả sử bạn sử dụng một SQLiteOpenHelper, bạn có thể sử dụng một phương pháp createDatabaseIfRequired(); trong getReadableDatabase()getWritableDatabase()

private boolean checkOldDatabase() { 
    Log.d(Constants.LOGTAG, "OperationDbHelper.checkDatabase"); 
    File f = new File(DB_PATH + OLD_DB_NAME); 
    return f.exists(); 
} 

public void createDatabaseIfRequired() throws IOException, SQLiteException { 
    if (!checkOldDatabase()) { 
     // do db comparison/delete old db/copy new db 
    } 
} 
0

Không thể đổi tên bảng sql trực tiếp.

Nhưng bạn có thể sao chép nó tạo mới và xóa ảnh cũ.

+0

Ah nghe có vẻ hoàn hảo, bạn có thể cung cấp một mẫu đơn giản hoặc liên kết đến một cái gì đó hữu ích. Điều duy nhất tôi cần để có được đầu của tôi là làm thế nào tôi sẽ kết nối với hai cơ sở dữ liệu cùng một lúc để làm một số so sánh. – Somk

7

Chỉ cần đổi tên tệp. Hãy chắc chắn rằng cơ sở dữ liệu được đóng trước!

Gọi này trong lớp học hoạt động của bạn:

private void renameDatabase() 
{ 
    File databaseFile = getDatabasePath("yourdb.whatever"); 
    File oldDatabaseFile = new File(databaseFile.getParentFile(), "yourdb_old.whatever"); 

    databaseFile.renameTo(oldDatabaseFile); 
} 

Response to rõ. Đổi tên db cũ (như trên), sao chép tệp mới từ thư mục asset, mở cả hai cơ sở dữ liệu và thực hiện so sánh của bạn. Sau đó xóa tập tin cũ.

+0

tại sao tôi đổi tên tệp? Tôi đang viết cơ sở dữ liệu từ tệp. Khi đã viết nó sẽ không bao giờ được sử dụng nữa. – Somk

+1

Từ câu hỏi của bạn: "Có thể đổi tên một cơ sở dữ liệu đã được tạo trong Android không?" Điều đó có nghĩa là đổi tên tập tin, về cơ bản. Đó là những gì bạn đang thực sự cố gắng để làm gì? –

+0

Một lần nữa, "... Tôi muốn đổi tên cơ sở dữ liệu cũ và cài đặt mới ...". Vẫn còn bối rối. Đó là đổi tên một tập tin. Bạn đang cố gắng sao chép một BẢNG mới? Câu hỏi khác. –

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