MST

星途 面试题库

面试题:SQLite中Android SQLiteDatabase类如何实现数据的插入操作

在Android开发中使用SQLiteDatabase类,请详细阐述如何向一个已存在的表中插入一条新的数据记录,需给出关键代码片段并解释各部分含义。
37.8万 热度难度
数据库SQLite

知识考点

AI 面试

面试题答案

一键面试
  1. 获取SQLiteDatabase实例: 首先需要获取一个SQLiteDatabase实例,通常在自定义的SQLiteOpenHelper子类中进行操作。假设已经有一个MyDatabaseHelper继承自SQLiteOpenHelper

    MyDatabaseHelper dbHelper = new MyDatabaseHelper(context, "my_database.db", null, 1);
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    
    • MyDatabaseHelper(context, "my_database.db", null, 1)context是上下文对象,用于访问应用程序的资源和环境;"my_database.db"是数据库名称;null表示使用默认的游标工厂;1是数据库版本号。
    • dbHelper.getWritableDatabase():获取一个可写的数据库实例,如果数据库不存在,会先创建数据库。
  2. 插入数据: 使用ContentValues来存储要插入的数据,然后调用SQLiteDatabaseinsert方法。假设存在一个名为users的表,包含nameage两列:

    ContentValues values = new ContentValues();
    values.put("name", "John");
    values.put("age", 30);
    long newRowId = db.insert("users", null, values);
    
    • ContentValues values = new ContentValues():创建一个ContentValues对象,它类似于一个键值对的映射,用于存储要插入的数据。
    • values.put("name", "John"):将name列的值设置为John,第一个参数是列名,第二个参数是对应的值。
    • values.put("age", 30):将age列的值设置为30
    • db.insert("users", null, values)
      • 第一个参数"users"是要插入数据的表名。
      • 第二个参数null是一个可选的nullColumnHack,如果values为空,nullColumnHack指定的列会被插入NULL值,一般设置为null
      • 第三个参数values是包含要插入数据的ContentValues对象。
      • 返回值newRowId是插入数据后新行的行ID,如果插入失败,返回-1
  3. 关闭数据库: 在操作完成后,需要关闭数据库以释放资源:

    db.close();
    

    db.close()关闭数据库连接,确保数据库资源被正确释放。