2010-05-20 24 views
6

Khi chúng tôi phát triển Android biết, phương thức SQLiteDatabaseexecSQL chỉ có thể thực thi một câu lệnh.Thực thi truy vấn SQL theo lô hiệu quả trên Android, để nâng cấp cơ sở dữ liệu

Các doc nói:

Thực hiện một câu lệnh SQL đơn đó không phải là một truy vấn. Ví dụ: CREATE TABLE, DELETE, INSERT, v.v. Nhiều câu lệnh được phân tách bằng ; s không được hỗ trợ.

tôi phải tải trong một loạt các hồ sơ, 1000 và đếm.
Làm cách nào để chèn chúng hiệu quả?
Và cách nào dễ nhất để phân phối các câu lệnh SQL này với gói ứng dụng của bạn?

Tôi đề cập, đã có cơ sở dữ liệu hệ thống và tôi sẽ chạy điều này trên sự kiện onUpdate.

tôi có mã này cho đến nay:

List<String[]> li = new ArrayList<String[]>(); 
     li.add(new String[] { 
       "-1", "Stop", "0" 
     }); 
     li.add(new String[] { 
       "0", "Start", "0" 
     }); 
    /* the rest of the assign */ 
try { 
     for (String[] elem : li) { 
      getDb().execSQL(
        "INSERT INTO " + TABLENAME + " (" + _ID + "," + NAME + "," + PARSE_ORDER 
          + ") VALUES (?,?,?)", elem); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

Trả lời

16

làm thế nào để chèn những hiệu quả?

Sử dụng giao dịch:

db.beginTransaction(); 
    try { 
     for(;;) { 
      db.execSQL(...); 
      } 
     db.setTransactionSuccessful(); 
    } finally { 
     db.endTransaction(); 
    } 
1

Tôi nghĩ rằng những gì bạn phải là cách duy nhất để tải những 1.000 hồ sơ, bây giờ, như xa như triển khai mà DB với tập tin apk của bạn, hãy kiểm tra bài này :

http://www.helloandroid.com/tutorials/how-have-default-database

+0

Tôi đã ghi chép liên quan đến vấn đề này, và tất cả các giải pháp này được dựa độc quyền trên thực tế là chúng ta tạo ra một cơ sở dữ liệu mới. Nhưng tôi cần điều này khi nâng cấp, vì vậy việc thay thế cơ sở dữ liệu hiện tại không tốt, tôi phải giữ nội dung của người dùng trong đó. – Pentium10

+0

Không có lý do gì bạn không thể sử dụng hai cơ sở dữ liệu - một cơ sở dữ liệu người dùng và một cơ sở dữ liệu thông tin tĩnh. Bằng cách đó bạn hoàn toàn có thể thay thế cơ sở dữ liệu tĩnh khi nâng cấp trong khi để dữ liệu người dùng bị ảnh hưởng. –

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