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

SQLiteDiskIOException với mã lỗi 10:lỗi I / O đĩa

Vì bạn đang sử dụng Bộ nhớ ngoài, ứng dụng của bạn phải biết trạng thái Bộ nhớ ngoài mà bạn có thể nhận được qua Environment.getExternalStorageState() .

Bạn chỉ phải truy cập Bộ nhớ ngoài khi trạng thái là MOUNTED .

Nếu bạn đang cố gắng mở một tệp (hoặc SQLite DB; nó chỉ là một tệp!) Trong khi khởi động thiết bị, bạn sẽ chắc chắn gặp sự cố vì Bộ nhớ ngoài chưa được gắn kết cho đến khi khởi động thiết bị (sau khi Màn hình chính hiển thị).

Cách giải quyết vấn đề này là đăng ký IntentFilter để được thông báo về tất cả các thay đổi trong trạng thái Bộ nhớ ngoài và hoạt động tương ứng.

Luôn luôn là một ý kiến ​​hay khi đọc tài liệu! Xem tài liệu Android để biết chi tiết:http://developer.android.com/reference/android/os/Enosystem.html

Việc sử dụng Bộ nhớ ngoài cho mục đích này là không rõ ràng, vì bạn không thể kiểm soát khi nào nó không khả dụng! Ví dụ:người dùng cắm thiết bị của họ vào USB trên máy tính của họ và chọn tùy chọn "Bật USB Mass Storage", để họ có thể truy cập Bộ nhớ ngoài của thiết bị từ máy tính của họ. Tin xấu! Ứng dụng của bạn sẽ bị ngắt kết nối khỏi Bộ nhớ ngoài và rất có thể không có cơ hội thực hiện bất kỳ IO dọn dẹp nào!

Với tình trạng này, bây giờ bạn không còn phải làm gì với tất cả dữ liệu bạn sẽ đưa vào cơ sở dữ liệu của mình, nếu chỉ có nó là có sẵn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ truy vấn dữ liệu đầu tiên từ một bảng

  2. tôi có ứng dụng android lấy dữ liệu từ sqlite và hiển thị dữ liệu trong BaseAdapter .. cách tốt nhất là gì ??

  3. hướng dẫn xác thực vân tay qua USB sinh trắc học android

  4. Cạm bẫy và bẫy SQLite

  5. SQLite onUpgrade () thất vọng