我在我的Android应用程序中使用sqlite数据库。我想将数据库下载到pc。有人可以告诉我该怎么做吗?
答案 0 :(得分:6)
如果您的应用是在模拟器中,您只需使用DDMS并打开/data/data/your.package.name/databases
。
如果您的移动版应用。这是我将数据库复制到sdcard root
文件夹的方法。
/** The name of the database file */
static final String DATABASE_NAME = "mydatabase.db";
static final String DATABASE_NAME_FULL = "/data/data/com.my.application/databases/" + DATABASE_NAME;
public static boolean backUpDataBase(Context context){
boolean result = true;
// Source path in the application database folder
String appDbPath = DATABASE_NAME_FULL;
// Destination Path to the sdcard app folder
String sdFolder = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + DATABASE_NAME;
InputStream myInput = null;
OutputStream myOutput = null;
try {
//Open your local db as the input stream
myInput = new FileInputStream(appDbPath);
//Open the empty db as the output stream
myOutput = new FileOutputStream(sdFolder);
//transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
} catch (IOException e) {
result = false;
e.printStackTrace();
} finally {
try {
//Close the streams
if(myOutput!=null){
myOutput.flush();
myOutput.close();
}
if(myInput!=null){
myInput.close();
}
} catch (IOException e) { }
}
return result;
}
你需要在manifest.xml
中使用它 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 1 :(得分:1)
如果您的模拟器正在运行,您可以打开DDMS
视角(Window > Open perspective > DDMS
)并打开data/data/your.package.name/databases
并将其拉到您的计算机上来访问它。
如果设备未植根,则无法从设备获取。如果是,则无法访问它所在的目录,因为它受到保护。您必须使用根浏览器将其复制到SD卡上,然后您可以使用DDMS将其复制到计算机上。
答案 2 :(得分:0)
我通过使用android调试桥解决了这个问题。要获取数据库,您必须在sdk工具的目录中执行:
adb.exe exec-out run-as com.example.project cat databases/databasename > file.sqlite
其中com.example.project
是清单中的程序包名称,而databasename
是数据库的名称。该数据库将被放置到您当前的目录中。
它可在仿真器和设备上使用(已检查到API级别28)。