Я хочу использовать SQLite с моим собственным проектом Expo реагировать. Поэтому я загрузил браузер БД для SQLite и создал базу данных и таблицы перед загрузкой их в свой проект.
Теперь у меня есть предварительно заполненная база данных, которую я хочу загрузить в свой проект. У меня было несколько проблем, таких как эта база данных не существует ... et c. Однако я решил эту проблему с помощью модуля базы данных:
// Database.js
import * as SQLite from 'expo-sqlite';
module.exports = SQLite.openDatabase('myDb.db');
, а затем импортировал его на мою домашнюю страницу в папке Screens:
import Database from '../db/database';
function myFunction(){
console.log("Enter Function");
console.log(Database);
Database.transaction(function(txn) {
console.log("Enter Transaction");
txn.executeSql(
"INSERT INTO users (name, email, password) VALUES ('Lama', 'lama@gmail,com', 'lam123');",
); //end txn
}, function (error){
console.log(error);
},
function(){
console.log("Success");
});
}//end myFunction()
Журналы консоли:
Enter Function
WebSQLDatabase {
"_currentTask": null,
"_db": SQLiteDatabase {
"_closed": false,
"_name": "myDb.db",
},
"_running": false,
"_txnQueue": Queue {
"length": 0,
},
"exec": [Function anonymous],
"version": "1.0",
}
Enter Transaction
Error code 1: no such table: users
- node_modules/expo-sqlite/build/SQLite.js:36:15 in _deserializeResultSet
* [native code]:null in map
- node_modules/expo-sqlite/build/SQLite.js:16:40 in SQLiteDatabase#exec
- node_modules/promise/setimmediate/core.js:37:14 in tryCallOne
- node_modules/promise/setimmediate/core.js:123:25 in setImmediate$argument_0
- node_modules/react-native/Libraries/Core/Timers/JSTimers.js:146:14 in _callTimer
- node_modules/react-native/Libraries/Core/Timers/JSTimers.js:194:17 in _callImmediatesPass
- node_modules/react-native/Libraries/Core/Timers/JSTimers.js:458:30 in callImmediates
* [native code]:null in callImmediates
- node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:407:6 in __callImmediates
- node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:143:6 in __guard$argument_0
- node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:384:10 in __guard
- node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:142:17 in __guard$argument_0
* [native code]:null in flushedQueue
* [native code]:null in invokeCallbackAndReturnFlushedQueue
Я действительно не знаю, что мне здесь не хватает, я попробовал код для создания другой базы данных, и она работает и добавляет записи (хотя я не могу найти, где база данных находится на моем ноутбуке). Я также попытался добавить запись из браузера БД в myDb, и она работает:
Я нашел этот вопрос заданным ранее, но ответы не помогли: SQLite Expo API, нет такой таблицы в предварительно заполненном файле?
Заранее спасибо!