кто-нибудь может мне помочь с этим?
У меня есть предварительно заполненная база данных 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();
});
}