如何在Android中使用SQL Script?Android Studio该功能使用咨询
Hey there! Let's tackle your two questions about SQL scripts in Android development and making the most of Android Studio's related tools—this stuff can save you a ton of time once you get the hang of it.
1. 在Android开发中使用SQL Script的常用方式
方式一:结合Room Persistence Library(推荐)
Room是Google官方推荐的ORM框架,执行SQL脚本非常灵活:
- 数据库初始化时执行脚本:可以通过
RoomDatabase.Callback在数据库首次创建或打开时运行脚本。比如:
val db = Room.databaseBuilder(context, AppDatabase::class.java, "my-db") .addCallback(object : RoomDatabase.Callback() { override fun onCreate(db: SupportSQLiteDatabase) { super.onCreate(db) // 执行单条初始化语句 db.execSQL("INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');") // 如果是长脚本,也可以读取本地文件后分批执行 } }) .build()
- 数据库迁移时执行脚本:当需要更新数据库版本时,用
Migration类执行变更脚本:
val MIGRATION_1_2 = object : Migration(1, 2) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("ALTER TABLE users ADD COLUMN age INTEGER;") database.execSQL("CREATE TABLE IF NOT EXISTS orders (id INTEGER PRIMARY KEY, user_id INTEGER);") } } // 构建数据库时添加迁移规则 val db = Room.databaseBuilder(context, AppDatabase::class.java, "my-db") .addMigrations(MIGRATION_1_2) .build()
方式二:从Assets目录加载外部SQL脚本
如果你的脚本比较长(比如初始化大量测试数据),把.sql文件放在src/main/assets目录下,然后读取执行:
fun executeSqlScript(context: Context, db: SupportSQLiteDatabase, scriptFileName: String) { val assetManager = context.assets assetManager.open(scriptFileName).bufferedReader().use { reader -> val script = reader.readText() // 按分号分割脚本(注意避开字符串中的分号) val statements = script.split(";").filter { it.trim().isNotEmpty() } statements.forEach { statement -> db.execSQL(statement.trim()) } } } // 调用示例(比如在Room的Callback里) executeSqlScript(context, db, "init_data.sql")
方式三:传统SQLiteOpenHelper方式
如果你还在使用旧的SQLiteOpenHelper,可以在onCreate或onUpgrade方法里直接执行SQL语句,逻辑和上面类似:
@Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);"); // 也可以加载assets目录下的脚本执行 }
2. 玩转Android Studio的SQL Script相关功能
功能一:Database Inspector(数据库检查器)
这是Android Studio最实用的SQL工具之一,直接在IDE里操作运行中App的数据库:
- 打开路径:
View > Tool Windows > App Inspection,然后在App Inspection窗口中选择Database Inspector - 连接运行中的App(真机或模拟器),找到你的数据库并打开
- 在底部的
Query标签页里,直接粘贴SQL脚本,点击运行按钮(▶️)就能执行,还能实时看到查询结果 - Pro tip:可以把常用的查询脚本保存为书签,下次直接调用,不用重复输入
功能二:Database Tools窗口(Data Sources and Drivers)
这个功能适合离线操作SQLite数据库文件:
- 打开路径:
View > Tool Windows > Database - 点击
+号,选择Data Source > SQLite,然后选择你的App生成的.db文件(一般在/data/data/[包名]/databases/目录下,可通过Device File Explorer获取) - 连接后,你可以像用专业数据库工具一样:运行SQL脚本、导出数据、修改表结构,甚至右键表名生成Room实体类(
Generate > Kotlin File/Class > Room Entity)
功能三:快速生成SQL脚本(Room辅助)
如果用Room,Android Studio可以帮你自动生成表结构脚本:
- 打开你的
@Database类,右键点击 >Generate > SQL Schema - 会自动生成对应版本的SQL脚本文件,保存在
schemas/目录下,你可以直接复用这些脚本做初始化或迁移
功能四:Terminal里直接用sqlite3命令
Android Studio的Terminal可以直接调用sqlite3工具操作数据库:
- 先通过
adb shell连接设备,然后进入数据库目录:cd /data/data/[包名]/databases/ - 运行
sqlite3 my-db.db进入命令行,然后直接输入SQL语句执行,比如.read init_data.sql加载外部脚本(需要先把脚本推到设备对应目录)
内容的提问来源于stack exchange,提问作者Adil
相关产品推荐
相关产品推荐

