SQLite не влияет на строки в реагировать на натив - PullRequest
0 голосов
/ 22 марта 2020

В моем HomeScreen я хочу удалить таблицу, создать новую и вставить данные. Мой constructor выглядит так:

var db = openDatabase({name: 'cars.db'});

export default class HomeScreen extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      Cars: [],
    };
    db.transaction(function(txn) {
      txn.executeSql(
        "SELECT name FROM sqlite_master WHERE type='table' AND name IN ('car', 'measure')",
        [],
        function(t, res) {
          if (res.rows.length == 0) {
            console.log('item:', res.rows.length);
            t.executeSql('DROP TABLE IF EXISTS car', []);
            t.executeSql('DROP TABLE IF EXISTS measure', []);
            t.executeSql(
              'CREATE TABLE IF NOT EXISTS car(car_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20))',
              [],
            );
            t.executeSql(
              'CREATE TABLE IF NOT EXISTS measure(measure_id INTEGER PRIMARY KEY AUTOINCREMENT,miles FLOAT,liters FLOAT,date DATETIME,car_id INTEGER, FOREIGN KEY(car_id) REFERENCES car(car_id)',
              [],
            );
            t.executeSql('INSERT INTO car(name) VALUES (Volkswagen)', [], (tx, res) => {console.log(res.rowsAffected)});
            t.executeSql('INSERT INTO car(name) VALUES (Audi)', []);
            console.log('inserted');

          }

        },
      );

    db.transaction(function(a){
      console.log(a);
      a.executeSql('SELECT * FROM car', [], (z, results) => {
        console.log('result', results);
        var temp = [];
        for (let i = 0; i < results.rows.length; ++i) {
          temp.push(results.rows.item(i));
          console.log('push', results.rows.item(i));
        }
        console.log(temp);
        this.setState({
          Cars: temp,
        });
      });
    });
    });
  }

Вывод из моих журналов выглядит следующим образом:

Элемент журнала: 0

Лог вставлен

LOG {"db": {"dbname": "cars.db", "openError": [Function errorcb], "openSuccess": [Function errorcb], "openargs": {"dblocation": "nosyn c "," name ":" cars.db "}}," error ": undefined," execute ": [{" error ": [Function anonymous]," params ": [Array]," sql ": "BEGIN", "success": null}], "fn": [функция анонимна], "readOnly": false, "success": неопределено, "txlock": true}

Мой вопрос почему я не нажал a.executeSql('SELECT * FROM car', [], (z, results) => и t.executeSql('INSERT INTO car(name) VALUES (Volkswagen)', [], (tx, res) => {console.log(res.rowsAffected)}); блок журналов консоли?

Правильно ли закодирована моя БД? Где найти файл cars.db, чтобы проверить, созданы ли таблицы достаточно успешно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...