SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Không thể mở cơ sở dữ liệu ở chế độ đọc / ghi

Câu hỏi của bạn không rõ ràng lắm, nhưng tôi sẽ cố gắng trả lời.

Rất có thể, cơ sở dữ liệu của bạn:

  1. Chưa tồn tại và bạn phải tạo nó;
  2. Tệp cơ sở dữ liệu của bạn ở chế độ chỉ đọc, bạn phải thay đổi nó (Câu hỏi này có thể liên quan).

Đối với # 2, thay vì sử dụng SQLiteOpenHelper#getReadableDatabase() , sử dụng SQLiteOpenHelper#getWritableDatabase

Nếu cơ sở dữ liệu của bạn nằm trên một đơn vị lưu trữ bên ngoài, bạn có một số điều khác cần kiểm tra:

  1. Bộ nhớ ngoài hiện có được gắn không? Nếu không, bạn không thể truy cập db.
  2. Nó có được gắn ở dạng chỉ đọc không? Nếu vậy, bạn sẽ phải thay đổi điều này.
  3. Bạn đã kiểm tra đường dẫn chưa? Có đúng không?

Vấn đề có thể nằm ở bất kỳ chủ đề nào trong số đó.

Để kiểm tra xem nó có được gắn ở dạng chỉ đọc hay không, hãy thử cách sau:

/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

Lấy từ đây.

Để biết thêm thông tin về Environment lớp, vui lòng tham khảo tài liệu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite LIKE

  2. Hiệu suất SQLite sẽ giảm nếu kích thước cơ sở dữ liệu lớn hơn 2 gigabyte?

  3. SQLite và khởi tạo cơ sở dữ liệu

  4. Loại dữ liệu không khớp (mã 20) trong khi chèn

  5. SQLite - Bất kỳ sự khác biệt nào giữa ràng buộc bảng UNIQUE và ràng buộc cột UNIQUE?