我使用ionic创建了一个应用程序,在应用程序中我想创建并填充数据库,但我希望代码运行一次,而不是每次打开应用程序时。因为一旦第一次创建数据库,就不需要再次运行它了。
我用谷歌搜索了,我找不到答案, 我感谢任何人都有解决方案。private dboptions: any = {
name: 'ba.db',
createFromLocation: 1,
location: 'default'
}
constructor(
private sqlite: SQLite) {
this.connectDB();
}
private connectDB(): any {
this.sqlite.create(this.dboptions).then(
(db: SQLiteObject) => {
// create the table
let sql = `CREATE TABLE ba (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR (200) NOT NULL UNIQUE,
title VARCHAR (200)`;
db.executeSql(sql, []).then(success => {
console.log('table created');
}).catch(err => {
console.log(err);
})
}
)
.catch(err => console.log(err));
}
答案 0 :(得分:1)
用户LocalStorage检查是否已经像这样创建了数据库。 Storage以下是有关如何向项目添加本地存储空间的链接。
private dboptions: any = {
name: 'ba.db',
createFromLocation: 1,
location: 'default'
}
constructor(
private sqlite: SQLite, , public storage: Storage) {
this.storage.get("isDbPresent")
.then((data) => {
console.log(data);
if (data === null) {
this.connectDB();
this.storage.get(Constants.storagekey)
}
})
}
private connectDB(): any {
this.sqlite.create(this.dboptions).then(
(db: SQLiteObject) => {
// create the table
let sql = `CREATE TABLE ba (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR (200) NOT NULL UNIQUE,
title VARCHAR (200)`;
db.executeSql(sql, []).then(success => {
console.log('table created');
}).catch(err => {
console.log(err);
})
}
)
.catch(err => console.log(err));
}
答案 1 :(得分:0)
添加离子存储并在完成后保存标记。
app.module.ts中的
import { IonicStorageModule } from '@ionic/storage';
...
imports: [
...
IonicStorageModule.forRoot()
],
...
在您的组件/提供商
中import { Storage } from '@ionic/storage';
storage.ready().then(() => {
storage.get('notFirstTime').then((notFirstTime:boolean) => {
if (!notFirstTime){
// Do what you want to do once
}
storage.set('notFirstTime', true);
})
});
...
离子存储是持久的(当您安装cordova-sqlite-storage
插件时)