Android开发之Sqlite的使用
Android系统提供Sqlite小型关系数据库来存储数据。要使用该数据库首先要写一个类继承SQLiteOpenHelper类,重写该类的onCreate方法和onUpgrade方法。
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper{
//版本控制 public DBHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { System.out.println("onCreate"); db.execSQL("create table user(id varchar(20) , name varchar(20) , phoneNumber varchar(20))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { System.out.println("onUpdate"); } }
为了得到数据库调用getReadableDatabase()方法。如果数据库第一次被创建则调用DBHelper重写的onCreate方法。当系统发现版本发生变化的时候则会调用onUpgrade方法,在这里我们可以做一些表的结构的修改。
//创建了一个DatabaseHelper对象,并生成数据库文件 DBHelper helper = new DBHelper(MainActivity.this, "user_db", null, 3); //getReadableDatabase函数会调用helper的onCreate方法 SQLiteDatabase database = helper.getReadableDatabase();
调用insert方法,就可以将数据插入到数据库当中
第一个参数:表名称
第二个参数:SQl不允许一个空列,如果ContentValues是空的,那么这一列被明确的指明为NULL值
第三个参数:ContentValues对象
class BtnInsertListener implements OnClickListener{ @Override public void onClick(View arg0) { //创建ContentValues对象 ContentValues values = new ContentValues(); values.put("id", 1); values.put("name", "cjx"); values.put("phoneNumber", "159xxxxxxxx"); DBHelper helper = new DBHelper(MainActivity.this, "user_db", null, 1); SQLiteDatabase database = helper.getWritableDatabase(); database.insert("user", null, values); } }
调用SQLiteDatabase对象的delete方法进行删除操作
第一个参数String:表名
第二个参数String:条件语句
第三个参数String[]:条件值
class BtnDeleteListener implements OnClickListener{ @Override public void onClick(View arg0) { DBHelper helper = new DBHelper(MainActivity.this, "user_db", null, 3); SQLiteDatabase database = helper.getWritableDatabase(); database.delete("user", "id=?", new String[]{ "1" }); } }
调用update方法
第一个参数String:表名
第二个参数ContentValues:ContentValues对象
第三个参数String:where字句,相当于sql语句where后面的语句,?号是占位符
第四个参数String[]:占位符的值
class BtnUpdateListener implements OnClickListener{ @Override public void onClick(View arg0) { DBHelper helper = new DBHelper(MainActivity.this, "user_db", null, 3); SQLiteDatabase database = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", "chen"); database.update("user", values, "id=?", new String[]{ "1" }); } }
调用SQLiteDatabase对象的query方法进行查询,返回一个Cursor对象:由数据库查询返回的结果集对象
第一个参数String:表名
第二个参数String[]:要查询的列名
第四个参数String[]:查询条件的参数
第五个参数String:对查询的结果进行分组
第六个参数String:对分组的结果进行限制
第七个参数String:对查询的结果进行排序
class BtnSelectListener implements OnClickListener{ @Override public void onClick(View arg0) { DBHelper helper = new DBHelper(MainActivity.this, "user_db", null, 3); SQLiteDatabase database = helper.getWritableDatabase(); Cursor cursor = database.query("user" , new String[]{ "id" , "name" , "phoneNumber" } ,"id=?" ,new String[]{ "1" } , null , null , null); while( cursor.moveToNext() ){ String id=cursor.getString(cursor.getColumnIndex("id")); System.out.println(id); String name=cursor.getString(cursor.getColumnIndex("name")); System.out.println(name); } } }
另外可以使用adb进入android模拟器查看android系统中刚被创建的sqlite数据库,同时也可以对该数据库进行管理。
进入android操作系统
# adb shell
进入自己新建的项目
# cd data/data/com.example.sqlite
进入user_db数据库
# sqlite3 user_db
提示符由 # 变成 sqlite> 接下来可以执行一些sql命令,对数据库进行管理了!
sqlite>.schema sqlite>select * from user;