sqlite是一种轻量级的关系型数据库,与大型的数据库相比,它的体积小,零配置,可以直接运行在应用程序的进程中,非常适合嵌入式的操作系统。
sqlite目前支持null,integer,real(浮点数字),text(字符串文本),blob(二进制文本)这5中数据类型。
android中的sqlite的数据库文件默认位于/data/data/package-name/databases目录下
package com.example.sqlite_notepad_01;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class MySQLiteHelper extends SQLiteOpenHelper {
/*
* 重写构造方法
*/
public MySQLiteHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
/*
* 创建数据库的方法
*/
@Override
public void onCreate(SQLiteDatabase db) {
//创建一个数据库及表格,3个字段:_id,title,content
db.execSQL("create table notepadtable(_id integer primary key autoincrement,title text,content text);");
//定义为integer primary key的字段最多只能存储64位的整数
}
/*
* 更新数据库的方法
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//
}
}
//创建助手类实例(CursorFactory的值为null,表示采用默认的工厂类)
MySQLiteHelper mySQLiteHelper = new MySQLiteHelper(edit.this,"notepad.db", null, 1);
//获取数据
String myTitlte = et01.getText().toString();
String myContent = et02.getText().toString();
//创建一个可读写的数据库
SQLiteDatabase db = mySQLiteHelper.getReadableDatabase();
// ContentValues 和HashTable类似都是一种存储的机制 但是两者最大的区别就在于,contenvalues只能存储基本类型的数据,像string,int之类的,不能存储对象这种东西,而HashTable却可以存储对象。
ContentValues values = new ContentValues();
values.put("title", myTitlte);
values.put("content", myContent);
//插入数据库
db.insert("notepadtable", null, values);
getReadableDatabase和getWriteableDatabase的区别。
getReadableDatabase的方法创建的数据库首先以读写方式打开数据库,如果用来存储数据库的磁盘空间已经满了,则会打开失败,然后重新以只读方式打开。
getWriteableDatabase的方法创建的数据库首先以读写方式打开数据库,如果用来存储数据库的磁盘空间已经满了,就会报错。