|
我建了一个lsit.w
代码如下:define(function(require){ var $ = require("jquery");
var justep = require("$UI/system/lib/justep");
var NoteDB = require("$UI/note3/noteDB");
var Model = function(){
this.callParent();
};
Model.prototype.modelLoad = function(event){
this.noteDB=NoteDB.getInstance();
this.noteDB.initData();
};
return Model;
});
noteDB.js代码如下:
define(function(require) {
var $ = require("jquery");
var justep = require("$UI/system/lib/justep");
var SqliteUtil = require("$UI/demo/sqlite/sqliteUtil");
var _instance = null;
var NoteDB = function() {
// 在调试场景下,这里可以选择用HTML5的Web SQL Database,在Chrome浏览器远程调试时可以直接看到数据库内容
this.database = window.openDatabase("X5_NOTE_DB", null, null, -1);
// this.database = window.sqlitePlugin.openDatabase({name : "X5_NOTE_DB"});
/*
this.database.transaction(function(tx) {
tx.executeSql("drop table demo_test");
tx.executeSql("drop table demo_region");
});
*/
};
/**
* 这里构建单例,为了让多个页面共用同一个数据连接,避免死锁
*/
NoteDB.getInstance = function() {
if (!_instance) {
_instance = new NoteDB();
}
return _instance;
};
/**
* 获取数据库链接
*/
NoteDB.prototype.getDatabase = function() {
return this.database;
};
/**
* 这里给出一个自动判断并初始化数据库的方案
*/
NoteDB.prototype.initData = function(onSuccess) {
var db = this.getDatabase();
// 检查表是否已存在
var sqlCheckExists = "SELECT count(*) AS cnt FROM sqlite_master WHERE type = 'table' AND UPPER(name) in ('NOTE','NOTE_CLASS') ";
SqliteUtil.executeSql(db, sqlCheckExists, null, function(res) {
if (res.rows.item(0).cnt < 2) {
// 如果不存在则获取初始化脚本
require(["text!$UI/note3/note.sql"], function(data) {
executeSqlFile(data);
});
} else {
doSuccess();
}
});
// 执行初始化脚本
function executeSqlFile(content) {
var sqls = content.split(";");
SqliteUtil.executeBatch(db, sqls, null, function() {
doSuccess();
});
}
function doSuccess() {
if ($.isFunction(onSuccess)) {
onSuccess.call(this);
}
}
};
return NoteDB;
});
note.sql代码如下:
CREATE TABLE IF NOT EXISTS `note` (
`fID` varchar(32) PRIMARY KEY ,
`fDate` date DEFAULT NULL,
`fMoney` decimal(10,0) DEFAULT NULL,
`fSummiter` varchar(12) DEFAULT NULL,
`fRestmiter` varchar(12) DEFAULT NULL,
`fLiter` varchar(12) DEFAULT NULL
) ;
CREATE TABLE IF NOT EXISTS `note_class` (
`fID` varchar(32) PRIMARY KEY ,
`fType` varchar(32) NOT NULL,
`fClass` varchar(32) NOT NULL
);
INSERT INTO `note` (`fID`, `fDate`, `fMoney`, `fSummiter`, `fRestmiter`, `fLiter`) VALUES
('C6CF724644700001C084D910260017E7', '2015-10-22', 50, '21', '23', '123'),
('C6CF724BA7900001956444909A00F4D0', '2015-10-22', 500, '123', '234', '445'),
('C6CF7F7A2A0000018C811900EB0A19F7', '2015-10-22', 85, '324', '23', '335'),
('C6CFC1ECCCF000013B3310301F1D1C7A', '2015-10-23', 1200, '2435', '234', '267');
INSERT INTO `note_class` (`fID`, `fType`, `fClass`) VALUES
('C6CF7622B43000017EA41D601D507130', '支出', '餐费'),
('C6CF7626E24000014B31526A1E3B135F', '支出', '交通'),
('C6CF762966B000019EA81DC015809660', '收入', '工资'),
('C6CF763063B00001A345B2EFD6901C95', '收入', '奖金'),
('C6CFC399428000015E1A8F6017B01034', '支出', '购物');
运行后,浏览器显示的是演示案例的数据,不是我自己创建的数据。求指导!!
|
-
|