Я пытаюсь выполнить запросы SQLite (INSERT и SELECT * FROM TABLE) с помощью IONIC. Я ищу вашу помощь...
1) Я создаю базу данных:
createDatabaseFile() {
this.sqlite.create({
name: DATABASE_FILENAME,
location: 'default'
})
.then((db: SQLiteObject) => {
this.db = db;
//Create table 'favories':
this.createTable("CREATE TABLE IF NOT EXISTS favories ( ID INTEGER PRIMARY KEY NOT NULL, cityNameFavory VARCHAR(100) );");
console.log('DB well created.');
})
.catch(e => console.log(e));
}
Метод createTable приведен ниже:
createTable(sqlInstruction) {
this.db.executeSql(sqlInstruction, {})
.then(
() => {
console.log('OK : ' + sqlInstruction);
})
.catch(e => console.log(e));
}
2) Я добавляю город как услугу, используя метод addFavorite (city), который вызывается из.html:
<ion-input [(ngModel)]="cityName" placeholder="Add a city..."></ion-input>
<button ion-button icon-only (click)="addFavorite(cityName)">
<ion-icon name="add"></ion-icon>
</button>
Я могу получить имя города в console.log, но я не успел вставить этот город в свой стол. Ниже приведен метод addFavorite:
addFavorite(city) {
this.db.executeSql("INSERT INTO favories (cityNameFavory) VALUES(?);", {city})
.then(() => {
alert('Ville ajoutée !');
})
.catch(e => console.log(e));
}
3) Я не могу получить свои данные, когда я использую "SELECT x FROM", даже если я хорошо извлекаю количество строк:
getData() {
this.db.executeSql("SELECT cityNameFavory FROM favories;", {})
.then((data) => {
if(data == null) {
alert("Empty!")
}
if(data.rows) {
console.log("Number of lines = " + data.rows.length);
if(data.rows.length > 0) {
for(var i = 0; i < data.rows.length; i++) {
this.listFavories.push(data.rows.item(i).cityNameFavory);
alert(this.listFavories[i]);
}
}
}
})
.catch(e => console.log(e));
}
А также:
public listFavories: string[] = [];
Ниже вы найдете мои данные:
пакеты cli:
@ionic/cli-utils : 1.19.0
ionic (Ionic CLI) : 3.19.0
глобальные пакеты:
cordova (Cordova CLI) : 7.1.0
локальные пакеты:
@ionic/app-scripts : 3.1.4
Cordova Platforms : none
Ionic Framework : ionic-angular 3.9.2
система:
Android SDK Tools : 26.1.1
Node : v7.9.0
npm : 4.2.0
OS : Windows 10
Наконец, я изменил свой код следующим образом:
this.db.executeSql('INSERT INTO 'table' (cityName) VALUES(\'' + city + '\')', {})
.then(() => {
console.log("City added");
})
.catch(e => console.log(e));