国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

HTML5本地存儲(chǔ)之Database Storage應(yīng)用介紹

2020-03-24 16:33:37
字體:
供稿:網(wǎng)友
在上一篇《HTML5本地存儲(chǔ)之Web Storage篇》中,簡(jiǎn)單介紹了如何利用localStorage實(shí)現(xiàn)本地存儲(chǔ);實(shí)際上,除了sessionStorage和localStorage外,HTML5還支持通過本地數(shù)據(jù)庫進(jìn)行本地?cái)?shù)據(jù)存儲(chǔ),HTML5采用的是 SQLLite 這種文件型數(shù)據(jù)庫,該數(shù)據(jù)庫多集中在嵌入式設(shè)備上,熟悉IOS/Android開發(fā)的同學(xué),應(yīng)該對(duì)SQLLite數(shù)據(jù)庫比較熟悉。
HTML5中的數(shù)據(jù)庫操作比較簡(jiǎn)單,主要有如下兩個(gè)函數(shù)
1、通過openDatabase方法創(chuàng)建一個(gè)訪問數(shù)據(jù)庫的對(duì)象

復(fù)制代碼代碼如下:
var db = openDatabase(databasename,version,description,size)

該方法有四個(gè)參數(shù),作用分別為:
databasename:數(shù)據(jù)庫名;
version:數(shù)據(jù)庫版本號(hào),可不填;
description:數(shù)據(jù)庫描述;
size:給數(shù)據(jù)庫分配的空間大小;
2、使用第一步創(chuàng)建的數(shù)據(jù)庫訪問對(duì)象(如db)執(zhí)行transaction方法,用來執(zhí)行事務(wù)處理

復(fù)制代碼代碼如下:
db.transaction(function(tx)){
//執(zhí)行訪問數(shù)據(jù)庫的語句
});

transaction方法使用一個(gè)回調(diào)函數(shù)作為參數(shù),在這個(gè)函數(shù)中,執(zhí)行訪問數(shù)據(jù)庫的具體操作;
3、通過executeSql方法執(zhí)行查詢

復(fù)制代碼代碼如下:
tx.executeSql(sqlQuery,[html' target='_blank'>value1,value2..],dataHandler,errorHandler)

executeSql方法有四個(gè)參數(shù),作用分別如下:
sqlQuery:需要具體執(zhí)行的sql語句,可以是create、select、update、delete;
[value1,value2..]:sql語句中所有使用到的參數(shù)的數(shù)組,在executeSql方法中,將sql語句中所要使用的參數(shù)先用 ? 代替,然后依次將這些參數(shù)組成數(shù)組放在第二個(gè)參數(shù)中;
dataHandler:執(zhí)行成功是調(diào)用的回調(diào)函數(shù),通過該函數(shù)可以獲得查詢結(jié)果集;
errorHandler:執(zhí)行失敗時(shí)調(diào)用的回調(diào)函數(shù);
本文通過HTML5的數(shù)據(jù)庫支持,重新實(shí)現(xiàn)一遍上篇文章中的通訊錄管理,待實(shí)現(xiàn)功能如下:
可創(chuàng)建聯(lián)系人并保存到數(shù)據(jù)庫中,聯(lián)系人字段包括:姓名、手機(jī)號(hào)碼、公司、創(chuàng)建時(shí)間;
列出當(dāng)前已保存的所有聯(lián)系人信息;
可刪除特定聯(lián)系人信息;
同樣,先準(zhǔn)備一個(gè)HTML頁面,如下:

復(fù)制代碼代碼如下:
!DOCTYPE HTML
html
head
meta charset="utf-8"/
title HTML5本地存儲(chǔ)之本地?cái)?shù)據(jù)庫篇 /title
style
.addDiv{
border: 2px dashed #ccc;
width:400px;
text-align:center;
}
/style
/head
body onload="loadAll()"
div
label for="user_name" 姓名: /label
input type="text" id="user_name" name="user_name" /
br/
label for="mobilephone" 手機(jī): /label
input type="text" id="mobilephone" name="mobilephone"/
br/
label for="mobilephone" 公司: /label
input type="text" id="company" name="company"/
br/
input type="button" value="新增記錄"/
/div
br/
div id="list"
/div
/body
/html

界面展現(xiàn)如下:

要實(shí)現(xiàn)創(chuàng)建新聯(lián)系人并存入數(shù)據(jù)庫功能,需要如下簡(jiǎn)單的JS代碼:

復(fù)制代碼代碼如下:
//打開數(shù)據(jù)庫
var db = openDatabase('contactdb','','local database demo',204800);
//保存數(shù)據(jù)
function save(){
var user_name = document.getElementById("user_name").value;
var mobilephone = document.getElementById("mobilephone").value;
var company = document.getElementById("company").value;
//創(chuàng)建時(shí)間
var time = new Date().getTime();
db.transaction(function(tx){
tx.executeSql('insert into contact values(?,?,?,?)',[user_name,mobilephone,company,time],onSuccess,onError);
});
}
//sql語句執(zhí)行成功后執(zhí)行的回調(diào)函數(shù)
function onSuccess(tx,rs){
alert("操作成功");
loadAll();
}
//sql語句執(zhí)行失敗后執(zhí)行的回調(diào)函數(shù)
function onError(tx,error){
alert("操作失敗,失敗信息:"+ error.message);
}

要展現(xiàn)當(dāng)前所有已保存的聯(lián)系人列表,可通過如下JS代碼實(shí)現(xiàn):

復(fù)制代碼代碼如下:
//將所有存儲(chǔ)在sqlLite數(shù)據(jù)庫中的聯(lián)系人全部取出來
function loadAll(){
var list = document.getElementById("list");
db.transaction(function(tx){
//如果數(shù)據(jù)表不存在,則創(chuàng)建數(shù)據(jù)表
tx.executeSql('create table if not exists contact(name text,phone text,company text,createtime INTEGER)',[]);
//查詢所有聯(lián)系人記錄
tx.executeSql('select * from contact',[],function(tx,rs){
if(rs.rows.length 0){
var result = " table
result += " tr th 序號(hào) /th th 姓名 /th th 手機(jī) /th th 公司 /th th 添加時(shí)間 /th th 操作 /th /tr
for(var i=0;i rs.rows.length;i++){
var row = rs.rows.item(i);
//轉(zhuǎn)換時(shí)間,并格式化輸出
var time = new Date();
time.setTime(row.createtime);
var timeStr = time.format("yyyy-MM-dd hh:mm:ss");
//拼裝一個(gè)表格的行節(jié)點(diǎn)
result += " tr td "+(i+1)+" /td td "+row.name+" /td td "+row.phone+" /td td "+row.company+" /td td "+timeStr+" /td td input type='button' value='刪除' / /td /tr
}
list.innerHTML = result;
}else{
list.innerHTML = "目前數(shù)據(jù)為空,趕緊開始加入聯(lián)系人吧";
}
});
});
}

其中,涉及到格式化時(shí)間的format函數(shù),可參考如下JS實(shí)現(xiàn):

復(fù)制代碼代碼如下:
Date.prototype.format = function(format)
{
var o = {
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(), //day
"h+" : this.getHours(), //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3), //quarter
"S" : this.getMilliseconds() //millisecond
}
if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
(this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)if(new RegExp("("+ k +")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length==1 ? o[k] :
("00"+ o[k]).substr((""+ o[k]).length));
return format;
}

最后,界面實(shí)現(xiàn)效果如下:

要實(shí)現(xiàn)具體某個(gè)聯(lián)系人,需執(zhí)行如下JS代碼:

復(fù)制代碼代碼如下:
//刪除聯(lián)系人信息
function del(phone){
db.transaction(function(tx){
//注意這里需要顯示的將傳入的參數(shù)phone轉(zhuǎn)變?yōu)?a href='http://www.survivalescaperooms.com/tag/zifuchuan_268_1.html' target='_blank'>字符串類型
tx.executeSql('delete from contact where phone=?',[String(phone)],onSuccess,onError);
});
}

如上截圖中的表格樣式,可參考如下CSS代碼:

復(fù)制代碼代碼如下:
th {
font: bold 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
color: #4f6b72;
border-right: 1px solid #C1DAD7;
border-bottom: 1px solid #C1DAD7;
border-top: 1px solid #C1DAD7;
letter-spacing: 2px;
text-transform: uppercase;
text-align: left;
padding: 6px 6px 6px 12px;
}
td {
border-right: 1px solid #C9DAD7;
border-bottom: 1px solid #C9DAD7;
background: #fff;
padding: 6px 6px 6px 12px;
color: #4f6b72;
}
html教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉善县| 台前县| 吴川市| 浦县| 霍山县| 大邑县| 景泰县| 凤凰县| 保靖县| 荣成市| 德昌县| 洛川县| 龙陵县| 甘泉县| 钦州市| 姜堰市| 和林格尔县| 虎林市| 石柱| 茌平县| 西峡县| 盈江县| 望都县| 德昌县| 黑山县| 潜江市| 龙陵县| 白玉县| 西盟| 乌苏市| 竹北市| 渝中区| 黄冈市| 榕江县| 临沭县| 东兰县| 大新县| 韩城市| 大关县| 潮安县| 云梦县|