我实际上尝试使用SQLite制作移动应用。我试着创建两个表:
constructor(private sqlite:SQLite,public modalCtrl: ModalController,public navCtrl: NavController, private navParam: NavParams, private databaseprovider: DatabaseProvider, private employeesProvider: EmployeeProvider) {
this.createDetabaseFile();
}
private createDetabaseFile() : void {
this.sqlite.create({
name: DATABASE_FILE_NAME,
location: 'default'
}).then((dbRes: SQLiteObject) => {
alert("bdd créée");
this.db = dbRes;
this.createTables();
})
}
private createTables() : void {
this.db.executeSql('CREATE table IF NOT EXISTS symbole(id INTEGER NOT NULL ,name TEXT)',{})
.then(() => {
alert("table symbole created");
this.db.executeSql('CREATE table IF NOT EXISTS representationPhoto(name VARCHAR(32))',{})
.then(() => {
alert("table representationPhoto created");
})
.catch(e => alert("erreur creation table"));
})
.catch(e => alert("erreur creation table"));
}
并且db.executeSql()
似乎无法正常工作,确实alert("table symbole created");
不会出现,但会出现alert("bdd créée")
,并且程序不会触发捕获。
你有个主意吗?
ps:抱歉我的英文不好
答案 0 :(得分:0)
请尝试在createDetabaseFile函数上方声明db变量,这对我来说似乎是问题所在,因为您正在使用this.db而不在类范围内声明它。
尝试这样做:
public db: any; // above createDetabaseFile function
答案 1 :(得分:0)
在处理platform ready
之前,您缺少SQLite
块。请尝试以下操作:
import { Platform } from 'ionic-angular';
constructor(private platform: Platform, ...other imports) {
this.platform.ready().then(() => {
this.createDetabaseFile();
})
}