SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLiteSQLite 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQLite 通过利用虚拟机和虚拟数据库引擎
(VDBE),使调试、修改和扩展 SQLite 的内核变得更加方便。
1 Android 集成了 SQLite 数据库 Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。
2 数据库存储在 data/< 项目文件夹 >/databases/ 下。 Android 开发中使用 SQLite 数据库 Activites 可以通过 Content Provider 或者 Service 访问一个数据库。
3 Android 提供了 SQLiteOpenHelper 创建一个数据库,只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。
数据库文件放在/data/data/对应的包/databases/对应的数据库
在控制台中输入adb shell 回车》ls》cd data/data》ls》cd "对应的包"》ls
取出来:adb push 手机路径 本地路径
例:adb pull /data/data/comsmart/databases/smartdb e:/
android手机获取自带存储路径和sd卡存储路径的方式是:
调用EnvironmentgetExternalStorageDirectory,返回的存储目录并不是系统内置的SD卡目录。
1、手机将eMC存储挂载到/mnt/external_sd、/mnt/sdcard2等节点,而将外置的SD卡挂载到EnvironmentgetExternalStorgeDirectory这个结点。
2、而另一部分手机直接将eMMC存储挂载在EnvironmentgetExternalStorageDirectory这个节点,而将真正的外置SD卡挂载到/mnt/external_sd、/mnt/sdcard2等节点。调用EnvironmentgetExternalStorgeDirectory,则返回内置的SD的路径。
扩展资料:Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta),发条机器人(Android10)。后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。
Android的系统架构和其 *** 作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
参考资料:
要在Android系统中 *** 作SQLite数据库,是通过Android的核心类SQLiteDatabase类来实现的,通常情况下为了数据库升级的需要以及使用方便,我们会选择继承SQLiteOpenHelper抽像类,但是SQLiteOpenHelper会将数据库文件创建在一个固定的目录(内存的/data/data/<package name/databases>目录中),如果你想使用已经存在的数据库文件也就是说数据库会和程序一起发布,就得通过使用SQLiteDabase的静态方法OpenOrCreateDatabase()方法来得到SQLiteDabase对象,下面是一个具体 *** 作类:
package netmydao;
import javaioFile;
import javaioFileOutputStream;
import javaioInputStream;
import netmyjokebookR;
import androidappActivity;
import androidcontentContext;
import androiddatabasesqliteSQLiteDatabase;
public class DBHelper {
//得到SD卡路径
private final String DATABASE_PATH = androidosEnvironment
getExternalStorageDirectory()getAbsolutePath()
+ "/joke";
private final Activity activity;
//数据库名
private final String DATABASE_FILENAME;
public DBHelper(Context context) {
// TODO Auto-generated constructor stub
//这里直接给数据库名
DATABASE_FILENAME = "jokebookdb3";
activity = (Activity)context;
}
//得到 *** 作数据库的对象
public SQLiteDatabase openDatabase()
{
try
{
boolean b = false;
//得到数据库的完整路径名
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
//将数据库文件从资源文件放到合适地方(资源文件也就是数据库文件放在项目的res下的raw目录中)
//将数据库文件复制到SD卡中 File dir = new File(DATABASE_PATH);
if (!direxists())
b = dirmkdir();
//判断是否存在该文件
if (!(new File(databaseFilename))exists())
{
//不存在得到数据库输入流对象
InputStream is = activitygetResources()openRawResource(
Rrawjokebook);
//创建输出流
FileOutputStream fos = new FileOutputStream(databaseFilename);
//将数据输出
byte[] buffer = new byte[8192];
int count = 0;
while ((count = isread(buffer)) > 0)
{
foswrite(buffer, 0, count);
}
//关闭资源
fosclose();
isclose();
}
//得到SQLDatabase对象
SQLiteDatabase database = SQLiteDatabaseopenOrCreateDatabase(
databaseFilename, null);
return database;
}
catch (Exception e)
{
Systemoutprintln(egetMessage());
}
return null;
}
}
写完这个类之后,就能得到SQLiteDatabase对象,就能对数据库 *** 作了
android是有自带的类库的:sqliteopenhelper,使用的时候继承这个类,然后写逻辑就可以,一般使用单例模式:
public
synchronized
static
dbhelper
getdbhelper(context
context)
{
if
(helper
==
null)
{
helper
=
new
dbhelper(context);
}
return
helper;
}
private
dbhelper(context
context)
{
super(context,
"自己的数据库名",
null,
数据库版本);
}
使用的时候也很简单,下面是一个删除 *** 作:
public
synchronized
void
deletesite(string
packname)
{
sqlitedatabase
db
=
getwritabledatabase();
try
{
dbbegintransaction();
dbdelete("site",
"packname=",
new
string[]
{
packname
});
dbsettransactionsuccessful();
}
finally
{
dbendtransaction();
if
(db
!=
null)
{
}
}
}
数据库存放在 /data/data/PACKAGE_NAME/databases 目录下
你当然可以指定数据库名字,可以将db文件打包在工程里。
private SQLiteDatabase openDatabase() {
try {
// 获得dictionarydb文件的绝对路径
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
// 如果/sdcard/dictionary目录中存在,创建这个目录
if (!direxists())
dirmkdir();
// 如果在/sdcard/dictionary目录中不存在
// dictionarydb文件,则从res\raw目录中复制这个文件到
// SD卡的目录(/sdcard/dictionary)
if (!(new File(databaseFilename))exists()) {
// 获得封装dictionarydb文件的InputStream对象
InputStream is = getResources()openRawResource(
Rrawdictionary);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
// 开始复制dictionarydb文件
while ((count = isread(buffer)) > 0) {
foswrite(buffer, 0, count);
}
fosclose();
isclose();
}
// 打开/sdcard/dictionary目录中的dictionarydb文件
SQLiteDatabase database = SQLiteDatabaseopenOrCreateDatabase(
databaseFilename, null);
return database;
} catch (Exception e) {
}
return null;
}
以上就是关于安卓 sqlite数据库 文件存放在哪全部的内容,包括:安卓 sqlite数据库 文件存放在哪、我开发的应用使用SQLLITE数据库,安装到android 手机上之后,这个数据库文件放在哪里,怎么样取出来、获取android手机的自带存储路径和sdcard存储路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)