В моем 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
, чтобы проверить, созданы ли таблицы достаточно успешно?