Android 开发中使用 SQLite 数据库
SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。Android 在运行时集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。对数熟悉 SQL 的开发人员来时,使用 SQLite 相当简单。可以,由于 JDBC 不适合手机这种内存受限设备,所以 Android 开发人员需要学习新的 API 来使用 SQLite。本文主要讲解 SQLite 在 Android 环境中的基本使用。
Android中有内置的数据库SQLite,其默认存储位置是在:标题栏中Window->show view->File Exporer->data/data/应用项目的包名,例如:假如有一个 *** 作Android SQLite数据库的应用包名为comexamplexutilsdemo,那么其内置的数据库的存储位置即为:/data/data/comexamplexutilsdemo/databases/xxxdb
为了实现对数据库版本进行管理,SQLiteOpenHelper类提供了两个重要的方法,分别是onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion),前者用于初次使用软件时生成数据库表。
后者用于升级软件时更新数据库表结构。当调用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法获取用于 *** 作数据库的SQLiteDatabase实例的时候,如果数据库不存在,Android系统会自动生成一个数据库,接着调用onCreate()方法,onCreate()方法在初次生成数据库时才会被调用,在onCreate()方法里可以生成数据库表结构及添加一些应用使用到的初始化数据。
onUpgrade()方法在数据库的版本发生变化时会被调用,一般在软件升级时才需改变版本号,而数据库的版本是由程序员控制的,假设数据库现在的版本是1,由于业务的变更,修改了数据库表结构,这时候就需要升级软件,升级软件时希望更新用户手机里的数据库表结构,为了实现这一目的,可以把原来的数据库版本设置为2,并且在onUpgrade()方法里面实现表结构的更新。
当软件的版本升级次数比较多,这时在onUpgrade()方法里面可以根据原版号和目标版本号进行判断,然后作出相应的表结构及数据更新。
android本地数据库sqlite基本是用来存本地数据或者加载服务器上的数据的。你是想问android客户端如何和服务器的数据库交互吧?这个很简单,他们不直接交互,android会发消息给服务器,请求某一些 *** 作,然后服务器收到客户端的消息后,对应的再 *** 作服务器上的数据库,然后返回消息给客户端。
Android为数据存储提供了多种方式,分别有如下几种:
SharedPreferences
SQLite数据库
内容提供者(Content provider)
网络
使用文件进行数据存储
首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。
复制代码 代码如下:
public class FileActivity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
FileOutputStream outStream = thisopenFileOutput("csdnttxt", ContextMODE_PRIVATE);
outStreamwrite("CSDN"getBytes());
outStreamclose();
}
}
openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/<package name>/files目录,如: /data/data/cncsdnaction/files/csdntxt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/<package name>/files目录就可以看到该文件。
openFileOutput()方法的第二参数用于指定 *** 作模式,有四种模式,分别为: ContextMODE_PRIVATE = 0
ContextMODE_APPEND = 32768
ContextMODE_WORLD_READABLE = 1
ContextMODE_WORLD_WRITEABLE = 2
ContextMODE_PRIVATE:为默认 *** 作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用ContextMODE_APPEND
ContextMODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
ContextMODE_WORLD_READABLE和ContextMODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
如果希望文件被其他应用读和写,可以传入:
openFileOutput("csdntxt", ContextMODE_WORLD_READABLE + ContextMODE_WORLD_WRITEABLE);
android有一套自己的安全模型,当应用程序(apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/<package name>/files),其他程序无法访问。除非在创建时指定了ContextMODE_WORLD_READABLE或者ContextMODE_WORLD_WRITEABLE ,只有这样其他程序才能正确访问。
读取文件内容
如果要打开存放在/data/data/<package name>/files目录应用私有的文件,可以使用Activity提供openFileInput()方法。
FileInputStream inStream = thisgetContext()openFileInput("csdntxt");
Logi("FileTest", readInStream(inStream));
readInStream()的方法请看本页下面备注。
或者直接使用文件的绝对路径:
File file = new File("/data/data/cncsdnaction/files/csdntxt");
FileInputStream inStream = new FileInputStream(file);
Logi("FileTest", readInStream(inStream));
注意:上面文件路径中的“cncsdnaction”为应用所在包,当你在编写代码时应替换为你自己应用使用的包。
对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定ContextMODE_WORLD_READABLE和ContextMODE_WORLD_WRITEABLE权限。
Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data/<package name>/cache目录
getFilesDir()方法用于获取/data/data/<package name>/files目录
以上就是关于android手机使用的是什么数据库全部的内容,包括:android手机使用的是什么数据库、android 中的数据库存在在工程中的哪个目录下、android中 怎样获取服务器上的数据库版本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)