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 数据到 ListView

当sqlite android片段中的数据更改或删除时如何刷新recyclerview?

如何在片段内的 recylerview 列表中显示 SQLite 数据库数据?

使用 SQLite 的 Android 简单 ListFragment

使用 SQLite 的 Android ListView