android - 为什么我的 SQLite 数据库文件没有显示任何数据?
问题描述
目标 -
我正在尝试使用 React native 存储来自地理位置 API 的经度和纬度数据。我创建了一个.db
文件,将其放入/assets/
android中的文件夹中。首先,我试图插入或检索任何类型的数据,而不是位置数据。错误 -
它表明Test
当我尝试console.log()
它时没有命名表。
问题 -
每当我尝试将数据插入数据库时,我都看不到添加了任何新数据,而且当我尝试读取已经填充的数据库时,我什么也看不到。我哪里错了?我对此很陌生。
返回的响应是什么
SQL transaction
。我console.log
知道但无法理解。应该在哪里
transaction function be located?
我正在为 SQLite OS 使用 DBbrowser - MacOS
代码 -
I am using this function to send or receive data.
sendData = () => {
// var SQLite = require('react-native-sqlite-storage')
var db = SQLite.openDatabase({name: 'a', createFromLocation : "~test.sqlite"}, this.openCB, this.errorCB);
db.transaction(txn => {
txn.executeSql(
// "INSERT INTO Test (latitude,longitude) VALUES(?,?)",
'SELECT * FROM Test',
[], //Argument to pass for the prepared statement
(res) => {
// let row = res.rows.(1);
console.log(res);
} //Callback function to handle the result response
);
});
};
// I mapped this button to send data.
<TouchableOpacity onPress={this.sendData} style={styles.button}>
<Text> SEND DATA</Text
</TouchableOpacity>
解决方案
您将无法修改存储在 assets 文件夹中的数据库。典型的方法是在尝试打开数据库插入记录之前,首先检查数据库是否存在于您的应用程序数据文件夹中(不确定 React 是否具有相同的文件夹结构)。如果数据文件夹中不存在数据库,则将干净的数据库从资产复制到数据文件夹,然后从数据文件夹中打开数据库。只要应用程序没有从设备上删除,数据文件夹中的数据库以及您插入其中的所有数据都会保留。删除并重新安装应用程序后,必须再次从资产中复制数据库,并且数据库将是干净的,其中没有新数据。
我不知道相同的数据文件夹结构是否适用于 React,但在原生 Android 中我使用:
"/data/data/com.mycompany.myapp/databases/"
或者
DB_PATH = myContext.getFilesDir().getParentFile().getPath() + "/databases/";
推荐阅读
- apache - Apache mod_rewrite 删除 .html 扩展名不起作用
- typescript - 用不同类型的属性分配对象的属性
- java - Netty 3 中的 channelOpen 和 channelClosed 上游事件中是否存在一对一的映射?
- python - Generic algorithm for element wise operation between hundreds of lists
- kubernetes - 在同一台服务器上运行 Kubernetes 主节点和节点(在 Kubernetes 主节点上调度 pod)
- java - 我无法将我的 Android 应用程序连接到 MongoDB
- entity-framework - Entity Framework 6 并将迁移应用到远程数据库
- javascript - javascript - 如何将链接分配给带有节点的登录按钮
- python-3.x - 检查 tensorflow 的 .data、.meta 和 .index
- docker - Docker 构建会丢失在 RUN 序列中完成的所有内容