irpas技术客

android使用SQLite_穷少年_android sqlite

irpas 1349

文章目录 1.SQLite的特点2.SQLite的使用2.1数据库的创建2.2新增(insert)2.3修改(update)2.4删除(delete)2.5查询(query) 3.使用SQL语句进行数据库操作4.SQLite事务

1.SQLite的特点 SQLite是一个轻量级数据库,它设计目标是嵌入式的,而且占用资源非常低SQLite没有服务器进程,通过文件保存数据,该文件是跨平台的支持null,integer,real,text,blob五种数据类型,实际上SQLite也接受varchar,char,decimal等数据类型,只不过在运算中或保存时会转换成对应的5种数据类型,因此,可以将各种类型数据保存到任何字段中 2.SQLite的使用 2.1数据库的创建

在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:contentValue long 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(); // insert db.execSQL("insert into user (id,name,age) values (?,?,?)",new Object[]{1,"张三",18}); // update db.execSQL("update user set name=? where id=?",new Object[]{"张三",1}); // delete db.execSQL("delete from user where id=1"); // query Cursor 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(); // 关闭数据库 }


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Android #sqlite