Android中使用SQLite
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中使用SQLite相关的知识,希望对你有一定的参考价值。
android系统内置了对SQLite数据库的支持,并提供了帮助类SQLiteOpenHelper。我们在开发时需要新建一个类继承SQLiteOpenHelper,并重写onCreate和onUpdate方法。onCreate方法仅在第一次新建数据库时调用,主要做创建表的操作。onUpdate方法在数据库版本更新时调用,根据业务需要做一些表的创建、删除、表结构改变等操作。同时需要实现一个构造函数,向父类的构造函数传入上下文对象、数据库名称、游标工厂和版本号。以下是一个简单的示例:
1 public class mysqliteHelper extends SQLiteOpenHelper { 2 public MySqliteHelper(Context context) { 3 // 创建一个test.db的数据库,版本号为1 4 super(context, "test.db", null, 1); 5 } 6 7 @Override 8 public void onCreate(SQLiteDatabase db) { 9 // 创建表person 10 db.execSQL("create table person(_id Integer primary key autoincrement, " + 11 "name varchar(10), age Integer)"); 12 } 13 14 @Override 15 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 16 // 删除表person,然后创建一个新的person表 17 db.execSQL("delete table if exists person"); 18 db.execSQL("create table person(_id Integer primary key, name text)"); 19 } 20 }
使用SQL语句进行增删改查操作
增删改操作使用方法SQLiteDatabase.execSQL()。查询操作使用方法SQLiteDatabase.execSQL(),这个方法会返回一个游标对象,需要循环取出数据。下面是使用SQL语句进行增删改查操作的示例代码:
1 // 1、新建一个MySqliteHelper帮助类 2 MySqliteHelper mySqliteHelper = new MySqliteHelper(MainActivity.this); 3 // 2、拿到一个SQLiteDatabase类的实例 4 SQLiteDatabase database = mySqliteHelper.getWritableDatabase(); 5 // 3、插入数据 6 database.execSQL("insert into person values(1, ‘张三‘, 10)"); 7 database.execSQL("insert into person values(2, ‘李四‘, 20)"); 8 // 4、修改数据 9 database.execSQL("update person set age=30 where name=‘张三‘"); 10 // 5、删除数据 11 database.execSQL("delete from person where name=‘张三‘"); 12 // 6、查询所有数据,并存放到一个List中 13 Cursor cursor = database.rawQuery("select * from person where age>?", new String[]{"10"}); 14 List<Map<String, Object>> resultList = new ArrayList<>(); //存放查询的结果 15 while (cursor.moveToNext()) { // 循环取数据 16 Map<String, Object> map = new HashMap<>(); 17 map.put("_id", cursor.getInt(cursor.getColumnIndex("_id"))); 18 map.put("name", cursor.getString(cursor.getColumnIndex("name"))); 19 map.put("age", cursor.getInt(cursor.getColumnIndex("age"))); 20 resultList.add(map); 21 } 22 cursor.close(); // 关闭游标 23 database.close(); // 关闭数据库
使用API进行增删改查操作
SQLiteDatabase类提供了api用于增删改查操作,避免在代码里面直接写sql语句,对应的方法分别是insert、update、delete、query。下面是简单的示例代码:
1 // 1、新建一个MySqliteHelper帮助类 2 MySqliteHelper mySqliteHelper = new MySqliteHelper(MainActivity.this); 3 // 2、拿到一个SQLiteDatabase类的实例 4 SQLiteDatabase database = mySqliteHelper.getWritableDatabase(); 5 // 3、插入数据 6 ContentValues person = new ContentValues(); 7 person.put("name", "张三"); 8 person.put("age", 33); 9 long resultCreate = database.insert("person", null, person); // resultCreate大于0表明插入成功 10 // 4、更新数据 11 ContentValues newPerson = new ContentValues(); 12 newPerson.put("age", 55); 13 int resultUpdate = database.update("person", newPerson, "name=?", new String[]{"张三"}); 14 // 5、删除数据 15 int resultDelete = database.delete("person", "name=?", new String[]{"张三"}); 16 // 6、查询数据 17 // 拿到cursor后的操作和使用sql语句查询一致,此处省略... 18 Cursor cursor = database.query("person", null, null, null, null, null, null); 19 cursor.close(); // 关闭游标 20 database.close(); // 关闭数据库
以上是关于Android中使用SQLite的主要内容,如果未能解决你的问题,请参考以下文章
java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常(代码片段
当sqlite android片段中的数据更改或删除时如何刷新recyclerview?
如何在片段内的 recylerview 列表中显示 SQLite 数据库数据?