我以编程方式创建了一个sqlite数据库,使用默认的扩展SQLiteOpenHelper
和覆盖方式onCreate()
.这样,db就会在需要时动态创建.
我想用sqlite浏览器检查OS X机器上db文件的内容.我知道db文件的名称,但我在设备上找不到它.我已经通过USB连接到设备并查找了finder和终端,但我找不到db文件.
android设备上的sqlite数据库的默认位置是什么?
Sha*_*dul 93
您可以找到已创建的数据库,名为 <your-database-name>
在
//data/data/<Your-Application-Package-Name>/databases/<your-database-name>
Run Code Online (Sandbox Code Playgroud)
使用File explorer将其拉出并重命名为.db3扩展名以在SQLiteExplorer中使用它
使用DDMS的File explorer导航到模拟器目录.
RRT*_*RTW 45
为此,我做的是
File f=new File("/data/data/your.app.package/databases/your_db.db3");
FileInputStream fis=null;
FileOutputStream fos=null;
try
{
fis=new FileInputStream(f);
fos=new FileOutputStream("/mnt/sdcard/db_dump.db");
while(true)
{
int i=fis.read();
if(i!=-1)
{fos.write(i);}
else
{break;}
}
fos.flush();
Toast.makeText(this, "DB dump OK", Toast.LENGTH_LONG).show();
}
catch(Exception e)
{
e.printStackTrace();
Toast.makeText(this, "DB dump ERROR", Toast.LENGTH_LONG).show();
}
finally
{
try
{
fos.close();
fis.close();
}
catch(IOException ioe)
{}
}
Run Code Online (Sandbox Code Playgroud)
要做到这一点,您的应用必须具有访问SD卡的权限,将以下设置添加到您的manifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
不是很好的方式,但有效.
Sho*_*ham 26
Context包含许多路径函数:Context.getXXXPath()
其中一个是android.content.Context.getDatabasePath(String dbname),它返回名为dbname的数据库的绝对路径.
Context ctx = this; // for Activity, or Service. Otherwise simply get the context.
String dbname = "mydb.db";
Path dbpath = ctx.getDatabasePath(dbname);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,返回的路径将类似于:
/data/data/com.me.myapp/databases/mydb.db
Run Code Online (Sandbox Code Playgroud)
请注意,如果使用SQLiteOpenHelper打开数据库,则会自动生成此路径.
Ran*_*ser 18
这是一个古老的问题,但回答可能有助于其他人.
无法在非root设备上接收Android保存数据库的默认路径.因此,访问数据库文件(仅适用于调试环境)的最简单方法是修改类的构造函数:
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
MySQLiteOpenHelper(Context context) {
super(context, "/mnt/sdcard/database_name.db", null, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
请记住使用以下行更改生产环境:
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
MySQLiteOpenHelper(Context context) {
super(context, "database_name.db", null, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
SQLite数据库只是一个文件.您可以获取该文件,移动它,甚至将其复制到另一个系统(例如,从手机到工作站),它将正常工作.Android将文件存储在/data/data/packagename/databases/
目录中.您可以使用Eclipse中的adb command
或File Explorer view
(Window > Show View > Other... > Android > File Explorer
)来查看,移动或删除它.
这可能会迟到但它会有所帮助.您可以访问数据库,而无需通过adb使设备生根
使用cmd启动adb并键入以下命令
-run-as com.your.package
-shell@android:/data/data/com.your.package $ ls
cache
databases
lib
shared_prefs
Run Code Online (Sandbox Code Playgroud)
现在你可以从这里打开.
如果您将数据库命名为文件而未给出路径,则最常见的获取文件夹的方法如下:
final File dbFile = new File(getFilesDir().getParent()+"/databases/"+DBAdapter.DATABASE_NAME);
Run Code Online (Sandbox Code Playgroud)
这里DBAdapter.DATABASE_NAME
只是一个String
类似“mydatabase.db”。Context.getFilesDir()
返回应用程序文件的路径,例如:/data/data/<your.app.packagename>/files/
多数民众赞成为什么.getParent()+"/databases/"
要删除“文件”并添加“数据库”。
BTW Eclipse会警告您有关硬编码的“ data / data /”字符串,但在这种情况下则不会。
归档时间: |
|
查看次数: |
248273 次 |
最近记录: |