Tôi đang làm việc trên một số mã SQLite và muốn kiểm tra cơ sở dữ liệu. Nếu tôi chạy mã trên trình mô phỏng, tôi có thể lấy tệp từ cơ sở dữ liệu \ data \ myProject \ bằng cách sử dụng trình quản lý tệp DDMS nhưng nếu tôi chạy nó trên phần cứng thực tế thì thư mục data \ data không thể truy cập được. Có cách nào khác ngoài việc truy cập root vào điện thoại không?Trình khám phá tệp DDMS không thể truy cập dữ liệu dữ liệu (HTC Desire HD)
Trả lời
Cơ sở dữ liệu SQLIte thực sự chỉ là một tệp được lưu trữ trong bộ nhớ điện thoại, mà bạn có thể sao chép vào thẻ SD của điện thoại và sau đó dễ dàng truy cập nó từ máy tính của bạn. Dưới đây là chức năng thực hiện chính xác những gì bạn cần. Chỉ cần đảm bảo thay đổi tên gói và tên cơ sở dữ liệu của bạn trước khi sử dụng chức năng.
public static void backupDatabase() throws IOException {
//Open your local db as the input stream
String inFileName = "/data/data/your.package.name/databases/database.sqlite";
File dbFile = new File(inFileName);
FileInputStream fis = new FileInputStream(dbFile);
String outFileName = Environment.getExternalStorageDirectory()
+ "/database.sqlite";
//Open the empty db as the output stream
OutputStream output = new FileOutputStream(outFileName);
//transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer))>0){
output.write(buffer, 0, length);
}
//Close the streams
output.flush();
output.close();
fis.close();
}
Như bạn có thể quan sát từ mã, cơ sở dữ liệu luôn được lưu trữ trong thư mục:
/data/data/your.package.name/databases/
Tên (trong ví dụ của chúng tôi "database.sqlite") là một trong những bạn chọn khi mở rộng SQLiteOpenHelper. Rõ ràng, bạn cũng cần phải thay thế "your.package.name" bằng tên của gói ứng dụng của bạn.
Đây là một kỹ thuật tốt cho những người trong chúng ta mà không có điện thoại bắt nguồn từ. Chỉ cần chắc chắn rằng bạn thêm quyền WRITE_EXTERNAL_STORAGE nếu không nó sẽ không hoạt động. Nó đã bị bắt trong xử lý ngoại lệ của tôi vì vậy tôi đã bỏ lỡ nó. –
Xin chào, tôi đã thử nhưng tôi không thực sự thấy tệp dữ liệu ở đâu? Tôi đang sử dụng các cửa sổ và tệp android của tôi được lưu trữ trong không gian làm việc, nhưng không có tệp dữ liệu nào theo gói của tôi –
Tôi tin rằng ứng dụng của bạn có thể thay đổi quyền unix của các tệp dữ liệu lưu trữ cục bộ của chúng để chúng có thể truy cập được vào các ứng dụng khác và adb.
Tuy nhiên, ứng dụng của bạn không thể thay đổi việc thiếu quyền danh sách trên thư mục/dữ liệu của điện thoại được bảo mật.
Kết quả là bạn sẽ phải lấy tệp bằng 'adb pull/full/path/to/file' - bạn không thể duyệt đến nó vì bạn không thể tạo danh sách/dữ liệu hoặc có thể là một số phụ huynh thư mục trung gian khác của tệp của bạn.
Thực sự về cách duy nhất xung quanh việc này là để đặt tệp của bạn một số nơi mà bạn có thể truy cập vào nó như ra trên sdcard trong quá trình phát triển. Sau đó, một khi bạn đang hài lòng những điều đang làm việc một cách chính xác đặt các tập tin mà bao giờ bạn muốn.
Tôi nói điều này vì tôi có Nexus One bán lẻ và Nexus One dành cho nhà phát triển. Trong khi sử dụng DDMS File Explorer, tôi nhận thấy tôi có thể duyệt thư mục dữ liệu trên thiết bị của nhà phát triển nhưng không thể trên thiết bị bán lẻ. Tôi bắt nguồn từ thiết bị bán lẻ của tôi và nó đã không giúp đỡ.
Vì vậy, tôi đoán nhiều nghiên cứu hơn phải được thực hiện đối với vấn đề này. Nhưng cho đến lúc đó tôi hy vọng điều này sẽ hữu ích.
Sao chép tập tin vào/mnt/sdcard sử dụng
cp /data/data/<packagename>/databases/<dbname>/<filename> /mnt/sdcard
sử dụng adb và sau đó sao chép vào máy tính của bạn từ/mnt/sdcard sử dụng
adb pull /mnt/sdcard/<filename>
và sau đó sử dụng sqlite3 để xem nó.
. :) – yoshi
Bạn phải root thiết bị của mình. Đi tới dấu nhắc lệnh và chuyển đến vị trí đặt adb của bạn.
ví dụ:
C: \ Program Files \ Android \ android-sdk \ platform-công cụ
loại adb root
. bây giờ đi đến thám hiểm tập tin của bạn và kiểm tra.
oh của tôi .. như một cách dễ dàng để làm điều đó .. bạn là một cuộc sống tiết kiệm .. cảm ơn bạn rất nhiều .. –
- 1. Không thể truy cập thư mục dữ liệu trong File Explorer của DDMS bằng Nexus One!
- 2. Xử lý cơ sở dữ liệu ngừng hoạt động trên Android 2.2.1 (Desire HD 1.72.405.3)
- 3. Trình khám phá tệp của studio Android không hiển thị tệp trong thư mục dữ liệu
- 4. thiếu bảng trong SQLite với phiên bản cụ thể của HTC DESIRE HD
- 5. Làm cách nào để truy cập tệp/dữ liệu/dữ liệu từ trình giả lập Android từ Genymotion?
- 6. Tại sao thư mục 'dữ liệu' không thể được hiển thị giống như trong trình thám hiểm tệp DDMS?
- 7. Truy cập dữ liệu được truy xuất
- 8. Có thể truy cập dữ liệu cũ trong CouchDB không?
- 9. Amazon S3 Lập trình Truy cập Dữ liệu Sử dụng
- 10. Đối tượng truy cập dữ liệu PHP
- 11. Làm cách nào để khám phá cấu trúc của cơ sở dữ liệu PostgreSQL?
- 12. Django truy cập dữ liệu định dạng
- 13. "Trình khám phá tệp" ở đâu trong IntelliJ?
- 14. Truy cập vào Siêu dữ liệu PNG
- 15. Lưu trữ Dữ liệu trong Truy cập MS và Truy vấn Dữ liệu trong Excel
- 16. Mở trình khám phá trên tệp
- 17. Không thể ghi dữ liệu phiên (tệp)
- 18. Khám phá mô hình tuần hoàn trong một lượng lớn dữ liệu thiết
- 19. Có thể truy cập cơ sở dữ liệu .mdf không có SQL Server không?
- 20. Tốc độ truy cập tệp so với tốc độ truy cập cơ sở dữ liệu
- 21. Trình khám phá tệp không hiển thị gì
- 22. Truy cập Python dữ liệu trong gói Subdirectory
- 23. Trình dữ liệu có nhanh hơn tập dữ liệu khi điền dữ liệu được không?
- 24. Truy cập cơ sở dữ liệu sqlite trên thiết bị Android
- 25. Cách hiển thị dữ liệu trong datagridview từ cơ sở dữ liệu truy cập
- 26. C# Tập dữ liệu để truy cập DB
- 27. Khám phá IP công trình
- 28. C# Cơ sở dữ liệu truy cập: DBNull vs null
- 29. Django là "không thể mở tệp cơ sở dữ liệu"
- 30. Không thể truy cập CocoaPods Tập tin dữ liệu cốt lõi của Pod
Bạn phải root điện thoại của bạn cho điều đó. –
Bạn phải là người chủ để làm điều đó bằng cách duyệt, nhưng chương trình có thể thay đổi sự cho phép của tập tin làm cho nó có thể truy cập thông qua tên đường dẫn đầy đủ của nó. –