Нет такой таблицы - SQLite в Expo отреагирует на родной проект - PullRequest
0 голосов
/ 31 января 2020

Я хочу использовать 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, и она работает: DB browser for SQLite - users table records

Я нашел этот вопрос заданным ранее, но ответы не помогли: SQLite Expo API, нет такой таблицы в предварительно заполненном файле?

Заранее спасибо!

...