新建一個weqsl.js文件? mian.js中添加import Websqldbfrom './assets/js/websql' ;Vue.use(Websqldb)
關(guān)于wesql有一個蛋疼的地方就是,你在vue頁面中無法獲得weqsl中定義操作數(shù)據(jù)庫方法return的數(shù)據(jù)
當(dāng)然 node.js中也是一樣,,所以,,只能用promise中reslove操作了,至少本人這樣認(rèn)為滴
main.js中如下
export default {
install(Vue){
var dbname='websql';/*數(shù)據(jù)庫名*/
? ? var version ='1.0'; /*數(shù)據(jù)庫版本*/
? ? var dbdesc ='websql'; /*數(shù)據(jù)庫描述*/
? ? var dbsize =2*1024*1024; /*數(shù)據(jù)庫大小*/
? ? var dataBase =null; /*暫存數(shù)據(jù)庫對象*/
/*數(shù)據(jù)庫中的表單名*/
? ? var websqlTable ="websqlTable";
? ? //drop table friend 刪除表
//打開數(shù)據(jù)庫
? ? dataBase = window.openDatabase(dbname, version, dbdesc, dbsize,function() {});
}
Vue.prototype.websqlOpenDB=function () {
console.log("數(shù)據(jù)庫打開成功")
return dataBase;
}
//
這里添加操作數(shù)據(jù)庫的方法
}
關(guān)于操作websql數(shù)據(jù)庫,嗯,,時間久遠(yuǎn),不知道理解的對不對,那就在我的代碼里復(fù)制吧
//新建firend表
Vue.prototype.frienddbbcreat=function () {
var tableName="friend"+localStorage.getItem("userid")
var creatTableSQL ='CREATE TABLE IF? NOT EXISTS '+ tableName +' (userid number,text text,time text,type text,photo text,name text,PRIMARY KEY (`userid`))';
? dataBase.transaction(function (ctx,result) {
ctx.executeSql(creatTableSQL,[],function(ctx,result){
console.log("表創(chuàng)建成功 " + tableName);
? ? },function(tx, error){
console.log('創(chuàng)建表失敗:' + tableName + error.message);
? ? });
? });
};
//friend表插入數(shù)據(jù)
Vue.prototype.frienddbinsert=function (obj) {
var tableName="friend"+localStorage.getItem("userid");
? var insterTableSQL ='INSERT INTO ' + tableName +' (userid,text,time,type,photo,name) VALUES (?,?,?,?,?,?)';
? dataBase.transaction(function (ctx) {
ctx.executeSql(insterTableSQL,[obj.userid,obj.text,obj.time,obj.type,obj.photo,obj.name],function (ctx,result){
console.log("插入" + tableName? +"成功");
? ? ? },
? ? ? function (tx, error) {
console.log('插入'+ tableName? +'失敗: ' + error.message);
? ? ? });
? });
};
//friend表更新數(shù)據(jù)1
Vue.prototype.frienddbupdate=function (obj) {
var tableName="friend"+localStorage.getItem("userid")
var sql ='UPDATE ' + tableName +' SET text = ? ,time = ?, type = ?? WHERE userid = ?';
? dataBase.transaction(function (ctx,result) {
ctx.executeSql(sql,[obj.text,obj.time,obj.type,obj.userid],function(ctx,result){
console.log("更新成功 " + tableName + name);
? ? },function(tx, error){
console.log('更新失敗:' + tableName? + name + error.message);
? ? });
? });
};
//通過userid從chat表獲取數(shù)據(jù)
Vue.prototype.chatget=function (userid) {
var tableName="chat"+localStorage.getItem("userid");
? var sql ='SELECT * FROM ' + tableName +' WHERE send = ?? OR? receive = ? order by time asc'
? var pp =new Promise(function (resolve,reject) {
dataBase.transaction(function (ctx) {
ctx.executeSql(sql,[userid,userid],function (ctx,result){
resolve(result)
},
? ? ? ? function (tx, error) {
console.log('chatget查詢失敗: ' + error.message);
? ? ? ? ? reject(error)
});
? ? });
? });
? return pp
}