有人可以帮我吗?我有一个 SQLite 预填充数据库.. 使用 SQL.JS 但是我看到无法在其中插入数据,我已经尝试了几种方法但没有成功。所以我正在尝试使用 Cordova Sqlite Storage 创建一个数据库,以便能够输入数据。我从 SQL.JS 获取应用程序中的数据,并且我能够通过存储打开数据库,但是:通过设备访问数据库,数据库不一样(虽然它是 sqlite)如果我有 2数据库很多不同。一些帮助?我想将数据插入到我由 SQlite Studio 在我的 SQL.JS 数据库中创建的表中
@Injectable()
export class DatabaseProvider {
database: SQLiteObject;
private databaseReady: BehaviorSubject<boolean>;
dbName: string;
constructor(public http: Http, private sqlitePorter: SQLitePorter, private storage: Storage, private sqlite: SQLite, private platform: Platform) {
this.databaseReady = new BehaviorSubject(false);
this.platform.ready().then(() => {
this.sqlite.create({
name: 'dbvidacarioca.sqlite',
location: 'default'
})
.then((db: SQLiteObject) => {
this.database = db;
this.storage.get('database_filled').then(val => {
if (val) {
this.databaseReady.next(true);
} else {
this.fillDatabase();
}
})
});
});
this.dbName = "dbvidacarioca.sqlite"; /* NOME DO BANCO DE DADOS */
fillDatabase() {
this.http.get('assets/dummyDump.sql')
.map(res => res.text())
.subscribe(sql => {
this.sqlitePorter.importSqlToDb(this.database, sql)
.then(data => {
this.databaseReady.next(true);
this.storage.set('database_filled', true);
})
.catch(e => console.log(e));
});
}
addDeveloper(email) {
let data = [email];
console.log('insert data: ', data);
return this.database.executeSql("INSERT INTO tb_usuario (email) VALUES (?)",
data).then(res => {
return res;
})
.catch(err => {
console.log('error: ', err);
});
}
getDatabaseState() {
return this.databaseReady.asObservable();
}
getAllDevelopers() {
return this.database.executeSql("SELECT * FROM tb_usuario", []).then(data =>
{
let usuarios = [];
if (data.rows.length > 0) {
for (var i = 0; i < data.rows.length; i++) {
usuarios.push({email: data.rows.item(i).email})
}
}
return usuarios;
}, err => {
console.log('Error: ', err);
return [];
})
}
executeQuery(sql: string) {
let db: any;
return new Promise<any>((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open('GET', this.dbName, true);
xhr.responseType = 'arraybuffer';
xhr.onload = (e) => {
let uInt8Array = new Uint8Array(xhr.response);
db = new SQL.Database(uInt8Array);
let contents = db.exec(sql);
if (contents.length > 0)
resolve(contents[0].values);
else resolve()
};
xhr.send();
});
}