sqlite的使用方法汇总

前端之家收集整理的这篇文章主要介绍了sqlite的使用方法汇总前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,说到本地数据持久化存储,都知道有三种,文件存储, 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()的解释:
两个方法都可以创建或打开一个数据库如果存在直接打开,否则创建一个新数据库。并返回一个可对数据库进行读写操作的对象。
不同的是,当数据库不可写入的时(如磁盘空间已经满了),getReadableDatabase()方法返回
的对象以只读的方式打开数据库,而getWritableDatabase()方法则抛出异常。
至此,运行手机程序,就可以创建了一个名叫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 查看文档,在运行程序的时候可能会出现@H_404_1025@

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

按照其提示的操作Tools -Android -Enable ADBintegration ,打勾后就可以运行了。@H_404_1025@



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

猜你在找的Sqlite相关文章