sqlite的使用方法汇总

sqlite的使用方法汇总,第1张

概述首先,说到本地数据持久化存储,都知道有三种,文件存储, SharedPreferences 存储和SQLite数据库存储技术。 三种方式有各自不同的使用场景,简单做下介绍。 ①、文件存储 一般定义:是最基本的一种数据存储方式,不对存储的内容进行任何格式化的处理,所有数据都是直接保存到文件中。 适用范围:一些简单的文本数据和二进制数据。 ②、SharedPreferences存储 一般定义:为使用键 首先,说到本地数据持久化存储,都知道有三种,文件存储, SharedPreferences 存储和sqlite数据库存储技术。

三种方式有各自不同的使用场景,简单做下介绍。
①、文件存储 一般定义:是最基本的一种数据存储方式,不对存储的内容进行任何格式化的处理,所有数据都是直接保存到文件中。 适用范围:一些简单的文本数据和二进制数据。
②、SharedPreferences存储 一般定义:为使用键值对的方式来保存存储数据,在保存一个数据的时候就对应一个键,读取的时候就根据键值把保存的数据取出来。 适用范围:键值对的数据形式,支持多种不同的数据类型存储,存储到为什么类型读取出来也是对应的数据类型。
③、sqlite数据库存储 一般定义:此为andriod系统内置的轻量级数据库,速度快占用资源少,只有几百K的内存占用,适用于移动设备上。 适用范围:一般表格类存储类型 一般数据类型 与上比比较轻便。


一般项目中,我是用的sp的存储比较多,由于sql使用的不多,知识也比较杂乱,没用做过总结,再次做一次主要是针对sqlite的总结。
一、使用sqlite数据库创建数据库
其提供了一个 sqliteOpenHelper 帮助类,通过此类可以简单的对数据库进行创建和升级。 那么如何使用呢?
(一)sqliteOpenHelper 类是一个抽象类,使用它我们需要创建一个类去继承它:
public class NotesDB extends sqliteOpenHelper {    //创建数据库 (执行一些创建表的逻辑)  @OverrIDe    public voID onCreate(sqliteDatabase sqliteDatabase) {            }    //升级数据库  @OverrIDe    public voID onUpgrade(sqliteDatabase sqliteDatabase,int i,int i1) {    }}
  
如代码,继承后有两个抽象方法,分别是onCreate()和onUpgrade(),这两个方法分别是创建数据库和
升级数据库的逻辑方法。
我们创建一个名为notes的表为例,看看怎么使用,如下代码为例:
/**  * Created by dell on 2016/8/23.  * <p/>  * 数据存放/data/data/<package name>/databases目录下  */ public class NotesDB extends sqliteOpenHelper {    public static final String table_name = "notes";    public static final String CONTENT = "content";    public static final String ID = "_ID";    public static final String TIME = "time";    private Context mContext;    // 四个参数依次是context,数据库名字,自定义的cursor一般为nullversion为版本  public NotesDB(Context context,String name,sqliteDatabase.CursorFactory factory,int version) {        super(context,"notes",null,1);        mContext = context;    }    //创建数据库 (执行一些创建表的逻辑)  @OverrIDe    public voID onCreate(sqliteDatabase sqliteDatabase) {        sqliteDatabase.execsql(CREATE_NOTES);    }    //升级数据库  @OverrIDe    public voID onUpgrade(sqliteDatabase sqliteDatabase,int i1) {    }    /**  * 创建notes */  public static final String CREATE_NOTES = "create table "  + table_name + "("  + ID + " integer primary key autoincrement,"  + CONTENT + " text not null,"  + TIME + " text not null)";}

以上都有注释,解释的很清楚,sqliteOpenHelper有两个构造方法,一般使用参数少一点的那个构造方法
即可,NotesDB构造方法接受四个参数,第一个为Context,必须有他才能进行数据库 *** 作,第二个为数据库名称
,第三个为查询数据的时候自定义的一个返回值,一般为Null,第四个参数为当前数据库的版本号,用于对数据
进行升级 *** 作。构建sqliteOpenHelper的实例后,在调用getReadableDatabase()或者getWritableDatabase()
方法就可以创建数据库了:
public class NotesMain extends Activity {    private NotesDB notesDb;    private sqliteDatabase dbWriter;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_mainnote);        notesDb = new NotesDB(this,"notes.db",1);        /**  * getWritableDatabase()getReadableDatabase()的解释:  * 两个方法都可以创建或打开一个数据库,  * 如果存在直接打开,否则创建一个新数据库。并返回一个可对数据库进行读写 *** 作的对象。  * 不同的是,当数据库不可写入的时(如磁盘空间已经满了),getReadableDatabase()方法返回  * 的对象以只读的方式打开数据库,而getWritableDatabase()方法则抛出异常。  */  dbWriter = notesDb.getWritableDatabase();        addDB();    }    public voID addDB() {        ContentValues cv = new ContentValues();        cv.put(NotesDB.CONTENT,"hello");        cv.put(NotesDB.TIME,getTime());        dbWriter.insert(NotesDB.table_name,cv);    }    /**  * 获取时间  *  * @return  */  public String getTime() {        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd HH:mm:ss");        Date curDate = new Date();        String str = format.format(curDate);        return str;    }}

关于sqliteOpenHelper的两个非常重要的实例方法 getWritableDatabase()getReadableDatabase()的解释:
@H_301_902@两个方法都可以创建或打开一个数据库,@H_301_902@如果存在直接打开,否则创建一个新数据库。并返回一个可对数据库进行读写 *** 作的对象。
@H_301_902@不同的是,当数据库不可写入的时(如磁盘空间已经满了),getReadableDatabase()@H_301_902@方法返回@H_301_902@的对象以只读的方式打开数据库,而getWritableDatabase()@H_301_902@方法则抛出异常。
至此,运行手机程序,就可以创建了一个名叫notes的数据库了,那么具体数据库怎么查询,可以通过sqlite3来查询。
二、sqlite查询创建的数据库和表信息。
使用DDMS中file explorer找到对应的你的程序下包名称下的数据库是可以看到文件的,但是是查询不到里边的内容的。
导出有时候会出现乱码的现象,那么在此可以使用adnroID的abd shell语言来查询。
adb是androID sdk 中自带的一个调试工具,使用这个工具可以直接对连接在电脑上的手机或者模拟器进行调试
 *** 作,他存放在sdk 的platform-tools 目录下,如果想要在命令号中使用需要配置到path变量中,方便使用。
windows配置方法:电脑-属性-高级-环境变量 找到path编辑 将platform-tools目录配置进去即可。
配置完成后 使用语言 adb shell,然后进入你的data/data/com<packagename>/databases,然后用sqlite3 加上数据库名即可打开表。
在使用.table 命令可以查看两张表,其中androID_Metadata,表示每个数据库中都自动生成的,另一个notes表就是刚才新建的表。此时还
可以用.schema命令查看它的建表语句。
到此就可以证明已经确实生成了notes.db数据库库文件了。
adb shell
  
打开data/data/com.example.dell.myapplication/databases目录,里边就是数据库
ls查看此目录下的详细文件内容。
sqlite3 打开数据库
  
.table 查看被打开的数据库中的表

.schema 查看建表语句。
    
.至此查看验证是否生成数据库和表的 *** 作到此为止。






遇到问题:

如果打开DDMS 查看文档,在运行程序的时候可能会出现

Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.

按照其提示的 *** 作Tools -AndroID -Enable ADBintegration ,打勾后就可以运行了。



参考:郭霖第一行代码图书。 总结

以上是内存溢出为你收集整理的sqlite的使用方法汇总全部内容,希望文章能够帮你解决sqlite的使用方法汇总所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1165789.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存