MST

星途 面试题库

面试题:SQLite在Android工程中创建数据库的关键步骤

在Android开发中使用SQLite创建新工程并添加数据库,请简述关键的步骤,包括但不限于数据库帮助类的创建、版本管理以及首次创建数据库时表结构的初始化操作。
14.4万 热度难度
数据库SQLite

知识考点

AI 面试

面试题答案

一键面试
  1. 创建新Android工程
    • 打开Android Studio,点击“Start a new Android Studio project”,选择合适的模板(如Empty Activity),填写应用名称、包名等信息,然后点击“Finish”创建工程。
  2. 创建数据库帮助类
    • 创建一个继承自SQLiteOpenHelper的类,例如MyDatabaseHelper
    • 在类中定义构造函数,接受Context、数据库名、CursorFactory(一般为null)和数据库版本号作为参数。示例代码如下:
    public class MyDatabaseHelper extends SQLiteOpenHelper {
        private static final String DATABASE_NAME = "my_database.db";
        private static final int DATABASE_VERSION = 1;
        public MyDatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
    }
    
  3. 版本管理
    • SQLiteOpenHelper的子类中,通过构造函数的版本号参数进行版本管理。例如上述代码中的DATABASE_VERSION
    • 当需要更新数据库版本时,在onUpgrade方法中编写更新逻辑。例如,增加新表或修改现有表结构。示例代码如下:
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (oldVersion < 2) {
            // 例如添加新表
            String createNewTable = "CREATE TABLE new_table (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)";
            db.execSQL(createNewTable);
        }
    }
    
  4. 首次创建数据库时表结构的初始化操作
    • SQLiteOpenHelper子类的onCreate方法中编写创建表的SQL语句。例如创建一个用户表:
    @Override
    public void onCreate(SQLiteDatabase db) {
        String createUserTable = "CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT)";
        db.execSQL(createUserTable);
    }
    
  5. 使用数据库帮助类
    • 在需要使用数据库的地方,创建MyDatabaseHelper实例。例如在Activity中:
    public class MainActivity extends AppCompatActivity {
        private MyDatabaseHelper myDatabaseHelper;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            myDatabaseHelper = new MyDatabaseHelper(this);
            // 获取可写数据库,这一步会触发onCreate或onUpgrade方法
            SQLiteDatabase db = myDatabaseHelper.getWritableDatabase();
        }
    }