I'm use SQLite database from react-native-sqlite-storage
I'm not getting result for display in alert
it display undefined
I'm also try without await and async
MainFile
import DBHelper from './DBHelper.js';
export default class MainFile extends Component {
ponentDidMount() {
this.dbTransaction();
}
dbTransaction = async () => {
var value = await DBHelper.getWatchList()
alert(value)
}
.....
}
DBHelper
import React, {Component} from 'react';
var SQLite = require('react-native-sqlite-storage');
var dbName = "test.db";
var tableName = "tableName";
const DBHelper = {
getWatchList: () => {
var db = SQLite.openDatabase({name : dbName, createFromLocation : 1}, openCB,errorCB);
db.transaction( (tx) => {
tx.executeSql("select * from " + tableName,
[], (tx, results) => {
console.log("\n\nQuery pleted\n");
var resultItemIdArr = new Array();
for (let i = 0; i < results.rows.length; i++) {
resultItemIdArr.push(results.rows.item(i).itemId);
console.log(results.rows.item(i).itemId);
}
return resultItemIdArr;
});
});
},
}
const errorCB = (err) => {
console.log("SQL Error: " + err);
}
const successCB = () => {
console.log("SQL executed fine");
}
const openCB = () => {
console.log("Database OPENED");
}
export default DBHelper;
I want to Print resultItemIdArr value in alert
I'm use SQLite database from react-native-sqlite-storage
I'm not getting result for display in alert
it display undefined
I'm also try without await and async
MainFile
import DBHelper from './DBHelper.js';
export default class MainFile extends Component {
ponentDidMount() {
this.dbTransaction();
}
dbTransaction = async () => {
var value = await DBHelper.getWatchList()
alert(value)
}
.....
}
DBHelper
import React, {Component} from 'react';
var SQLite = require('react-native-sqlite-storage');
var dbName = "test.db";
var tableName = "tableName";
const DBHelper = {
getWatchList: () => {
var db = SQLite.openDatabase({name : dbName, createFromLocation : 1}, openCB,errorCB);
db.transaction( (tx) => {
tx.executeSql("select * from " + tableName,
[], (tx, results) => {
console.log("\n\nQuery pleted\n");
var resultItemIdArr = new Array();
for (let i = 0; i < results.rows.length; i++) {
resultItemIdArr.push(results.rows.item(i).itemId);
console.log(results.rows.item(i).itemId);
}
return resultItemIdArr;
});
});
},
}
const errorCB = (err) => {
console.log("SQL Error: " + err);
}
const successCB = () => {
console.log("SQL executed fine");
}
const openCB = () => {
console.log("Database OPENED");
}
export default DBHelper;
I want to Print resultItemIdArr value in alert
Share Improve this question asked Jul 23, 2018 at 9:44 Bhaumik SuraniBhaumik Surani 1,8333 gold badges21 silver badges42 bronze badges1 Answer
Reset to default 7You are using a callback here db.transaction((tx) => {
so you are returning resultItemIdArr
inside the callback. If the lib doesn't support promises you should do it like this:
getWatchList: (callback) => {
var db = SQLite.openDatabase({name : dbName, createFromLocation : 1}, openCB,errorCB);
db.transaction( (tx) => {
tx.executeSql("select * from " + tableName,
[], (tx, results) => {
console.log("\n\nQuery pleted\n");
var resultItemIdArr = new Array();
for (let i = 0; i < results.rows.length; i++) {
resultItemIdArr.push(results.rows.item(i).itemId);
console.log(results.rows.item(i).itemId);
}
callback(resultItemIdArr);
});
});
},
and call the getWatchList
like this:
dbTransaction = () => {
DBHelper.getWatchList(value=>{
alert(value)
})
}