android中SQLite使用及特点
在android中,创建SQLite数据库非常简单。Android系统推荐使用SQLiteOpenHelper的子类创建数据库,因此需要创建一个类继承自SQLiteOpenHelper,并重写该类的onCreate和onUpgrade方法即可
import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DBHelper extends SQLiteOpenHelper { /** * 作为SQLiteOpenHelper子类必须有的构造方法 * @param context 上下文参数 * @param name 数据库名字 * @param factory 游标工厂 ,通常是null * @param version 数据库的版本 */ public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {super(context, name, factory, version); } /** * 数据库第一次被创建时调用该方法 * @param db */ @Override public void onCreate(SQLiteDatabase db) {// 初始化数据库的表结构,执行一条建表的SQL语句db.execSQL('create table user(u_id int not null primary key,u_name varchar(50) not null,age int)'); } /** * 当数据库的版本号增加调用 * @param db * @param oldVersion * @param newVersion */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}2.2新增(insert)
public void insert(String name,int age){// 通过DBHelper类获取一个读写的SQLiteDatabase对象SQLiteDatabase db=dbHelper.getWritableDatabase();// 创建ContentValue设置参数ContentValues contentValues=new ContentValues();contentValues.put('name',name);contentValues.put('age',age);// 插入数据// insert方法参数1:要插入的表名// insert方法参数2:如果发现将要插入的行为空时,会将这个列名的值设为null// insert方法参数3:contentValuelong i=db.insert('user',null ,contentValues);// 释放连接db.close(); }2.3修改(update)
public void update(String name,int age){// 通过DBHelper类获取一个读写的SQLiteDatabase对象SQLiteDatabase db=dbHelper.getWritableDatabase();// 创建ContentValue设置参数ContentValues contentValues=new ContentValues();contentValues.put('age',age);// 修改数据// 参数1:tablename// 参数2:修改的值// 参数3:修改的条件(SQL where语句)// 参数4:表示whereClause语句中的表达式的占位符参数列表,这些字符串会替换where条件中?db.update('user',contentValues,'name=?',new String[]{name});// 释放连接db.close(); }2.4删除(delete)
public void delete(long id) {// 通过DBHelper类获取一个读写的SQLiteDatabase对象SQLiteDatabase db = dbHelper.getWritableDatabase();// 参数1:tablename// 参数2:删除的条件(SQL语句)// 参数3:给修改的条件注入参数,一个或多个db.delete('user', 'u_id=?', new String[]{id + ''});// 释放连接db.close(); }2.5查询(query)
public void query() {// 通过DBHelper类获取一个读写的SQLiteDatabase对象SQLiteDatabase db = dbHelper.getWritableDatabase();// 参数1:table_name// 参数2:columns 要查询出来的列名。相当于 select *** from table语句中的 ***部分// 参数3:selection 查询条件字句,在条件子句允许使用占位符“?”表示条件值// 参数4:selectionArgs :对应于 selection参数 占位符的值// 参数5:groupby 相当于 select *** from table where && group by ... 语句中 ... 的部分// 参数6:having 相当于 select *** from table where && group by ...having %%% 语句中 %%% 的部分// 参数7:orderBy :相当于 select ***from ?? where&& group by ...having %%% order by@@语句中的@@ 部分,如: personid desc(按person 降序)Cursor cursor = db.query('user', null, null, null, null, null, null);// 将游标移到开头cursor.moveToFirst();while (!cursor.isAfterLast()) { // 游标只要不是在最后一行之后,就一直循环 int id=cursor.getInt(0); String name=cursor.getString(1); // 将游标移到下一行 cursor.moveToNext();}db.close(); }3.使用SQL语句进行数据库操作
// 通过DBHelper类获取一个读写的SQLiteDatabase对象SQLiteDatabase db = dbHelper.getWritableDatabase(); // insertdb.execSQL('insert into user (id,name,age) values (?,?,?)',new Object[]{1,'张三',18});// updatedb.execSQL('update user set name=? where id=?',new Object[]{'张三',1});// deletedb.execSQL('delete from user where id=1');// queryCursor cursor = db.rawQuery('select * from user where id=?', new String[]{'1'});4.SQLite事务
SQLite数据库同样支持事务
事务操作后一定要使用endTransaction()方法关闭事务,当执行到endTransaction()时,首先会检查是否有事务执行成功标记,有则提交数据库,无则回滚数据
DBHelper dbHelper = new DBHelper(MainActivity.this, 'test.db', null, 0);// 通过DBHelper类获取一个读写的SQLiteDatabase对象SQLiteDatabase db = dbHelper.getWritableDatabase();// 开始事务db.beginTransaction();try {// 标记数据库事务执行成功 db.setTransactionSuccessful();}catch (Exception e){ Log.i('事务处理失败',e.getMessage());}finally { db.endTransaction(); //关闭事务 db.close(); // 关闭数据库}
到此这篇关于android中SQLite使用及特点的文章就介绍到这了,更多相关android使用SQLite内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
相关文章: