React Native Android中如何使用预填充SQLite数据库?
React Native SQLite 数据库文件放置与连接问题
.db 文件放置位置
- Android:将
.db文件放入android/app/src/main/assets目录(若assets目录不存在,手动创建即可)。 - iOS:打开Xcode项目,将
.db文件拖拽到项目结构中,确保勾选对应的App Target,让文件被打包进App的主Bundle。
数据库连接的正确配置(附修正代码)
你提供的代码无法运行主要是因为location和createFromLocation参数配置错误,以下是修正后的代码及关键说明:
import SQLite from 'react-native-sqlite-storage'; // 初始化数据库连接 const db = SQLite.openDatabase({ name: 'mydb.db', // 需与assets/Bundle中的数据库文件名完全一致 createFromLocation: '~mydb.db', // 兼容Android/iOS:Android会自动读取assets,iOS读取Bundle中的文件 location: 'default' // 使用默认存储位置,无需手动指定绝对路径 }, () => { console.log('数据库连接成功'); }, (error) => { console.error('数据库连接失败:', error); }); // 执行查询操作 db.transaction((tx) => { tx.executeSql('SELECT * FROM user_table', [], (tx, results) => { const len = results.rows.length; for (let i = 0; i < len; i++) { console.log(results.rows.item(i)); } }, (tx, error) => { console.error('查询执行失败:', error); return false; // 触发事务回滚 }); }); export default db;
关键错误修正点
location参数:原代码填写了绝对路径,这是错误的。使用'default'让库自动处理不同平台的存储路径即可。createFromLocation参数:Android中1代表从assets目录读取,但iOS需要用~文件名的格式指定Bundle中的文件,使用'~mydb.db'可兼容双平台。- 文件名一致性:
name参数必须和你放置的.db文件名完全一致(包括.db后缀)。 - 添加错误回调:新增连接和查询的错误回调,方便快速定位问题。
内容的提问来源于stack exchange,提问作者Aditya Patil
相关产品推荐
相关产品推荐

