您的位置:首页 > 数据库

sqlite的使用方法汇总

2016-08-23 12:00 225 查看
首先,说到本地数据持久化存储,都知道有三种,文件存储,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一般为null,version为版本
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 i, 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", null, 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, null, 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 查看文档,在运行程序的时候可能会出现 

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

按照其提示的操作Tools -Android -Enable ADB integration ,打勾后就可以运行了。参考:郭霖第一行代码图书。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息