我是第一次接触React-Native,我在GitHub上遵循了react-native-sqlite-storage上的步骤,但不幸的是,我被事务卡住了,我已经尝试过enablePromises,但它仍然不起作用。我有点不知所措,不知道该怎么做。
import React from 'react';
import SQLite from 'react-native-sqlite-storage';
import { StyleSheet, Text, View, ListItem } from 'react-native';
export default function App() {
let db = SQLite.openDatabase(
{
name: 'users',
createFromLocation: 1,
},
successToOpenDB(),
failToOpenDB()
);
function successToOpenDB() {
db.transaction((tx) => {
tx.executeSql('SELECT * FROM USERS', [], (tx, results) => {
let dataLength = results.row.length;
alert(dataLength);
});
});
}
function failToOpenDB(err) {
console.log(err);
}
return (
<>
<View style={styles.header}>
<Text style={styles.headerText}>Title</Text>
</View>
</>
);
};谢谢!
发布于 2020-06-26 04:02:51
您正在传递成功的回调successToOpenDB函数,同时连接到数据库并使用未定义的" db“,并且您收到错误"cannot read property transaction of undefined.So do not pass successToOpenDB function as a success callback”。
errorCB(err) {
console.log("SQL Error: " + err);
},
successCB() {
console.log("SQL executed fine");
},
openCB() {
console.log("Database OPENED");
},
var db = SQLite.openDatabase({
name: 'users',
createFromLocation: 1,
}, openCB, errorCB);
db.transaction((tx) => {
tx.executeSql('SELECT * FROM Employees a, Departments b WHERE a.department = b.department_id', [], (tx, results) => {
console.log("Query completed");
// Get rows with Web SQL Database spec compliance.
var len = results.rows.length;
for (let i = 0; i < len; i++) {
let row = results.rows.item(i);
console.log(`Employee name: ${row.name}, Dept Name: ${row.deptName}`);
}
// Alternatively, you can use the non-standard raw method.
/*
let rows = results.rows.raw(); // shallow copy of rows Array
rows.map(row => console.log(`Employee name: ${row.name}, Dept Name: ${row.deptName}`));
*/
});
});https://stackoverflow.com/questions/62583281
复制相似问题