You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Expo使用expo-sqlite报错:SQLite.openDatabase未定义

解决Expo SQLite openDatabase 未定义及数据持久化问题

一、修正expo-sqlite的导入与初始化方式

最新版expo-sqlite已不再默认导出SQLite对象,旧文档的用法已失效,需采用模块化导入及正确的数据库初始化方式:

  1. 正确导入:
import * as SQLite from 'expo-sqlite';
  1. 持久化打开数据库:
    要避免关闭应用后数据重置,需指定明确的数据库文件名,确保数据存储在持久化目录中:
// 打开名为"app_db.db"的持久化数据库
const db = SQLite.openDatabase('app_db.db');

二、完整可运行示例代码

import React, { useEffect } from 'react';
import { View, Text, StyleSheet } from 'react-native';
import * as SQLite from 'expo-sqlite';

// 初始化持久化数据库
const db = SQLite.openDatabase('app_db.db');

export default function App() {
  useEffect(() => {
    // 创建表(不存在则创建)
    db.transaction(tx => {
      tx.executeSql(
        'CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY AUTOINCREMENT, content TEXT);',
        [],
        () => console.log('表创建成功'),
        (_, err) => console.log('建表失败:', err)
      );

      // 插入测试数据(可重复执行,不会重复插入相同内容)
      tx.executeSql(
        'INSERT OR IGNORE INTO notes (content) VALUES (?);',
        ['测试持久化数据'],
        (_, res) => res.insertId && console.log('数据插入成功,ID:', res.insertId),
        (_, err) => console.log('插入失败:', err)
      );

      // 查询数据,验证持久化效果
      tx.executeSql(
        'SELECT * FROM notes;',
        [],
        (_, res) => {
          const data = res.rows._array;
          console.log('当前存储的数据:', data);
        },
        (_, err) => console.log('查询失败:', err)
      );
    });
  }, []);

  return (
    <View style={styles.container}>
      <Text>SQLite 持久化测试</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
  },
});

三、关键注意事项

  • 弃用expo-sqlite/legacy:该版本使用临时存储,关闭应用后数据会被自动清除,这是你之前遇到数据重置的核心原因。
  • 检查版本兼容性:运行npx expo install --check确认expo-sqlite与当前Expo SDK版本匹配,避免因版本不兼容导致的异常。
  • 安卓模拟器权限:Expo会自动处理SQLite的存储权限,无需手动申请,确保模拟器未限制应用存储访问。

内容的提问来源于stack exchange,提问作者user27793975

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 07:43:16