html5資料庫操作
『壹』 html5 database storage查詢怎麼用
通過openDatabase方法創建一個訪問資料庫的對象
var db = openDatabase(databasename,version,description,size) ;
該方法有四個參數,作用分別為:
databasename:資料庫名;
version:資料庫版本號,可不填;
description:資料庫描述;
size:給資料庫分配的空間大小;
使用第一步創建的資料庫訪問對象(如db)執行transaction方法,用來執行事務處理,關於資料庫的所有操作都需要在這裡面進行,如執行查詢
db.transaction(function(tx)){
//執行訪問資料庫的語句
tx.executesql(sqlQuery,[value1,value2..],dataHandler,errorHandler)
});
通過executeSql方法執行查詢,就是上面transaction中執行查詢用到的方法。通過上面我們可以看出executeSql要在transaction中執行。下面詳細介紹一下executeSql的參數和使用。
tx.executeSql(sqlQuery,[value1,value2..],dataHandler,errorHandler)
tx是transaction中傳遞過來的事務處理對象。
executeSql方法有四個參數,作用分別如下:
sqlQuery:需要具體執行的sql語句,可以是create、select、update、delete;
[value1,value2..]:sql語句中所有使用到的參數的數組,在executeSql方法中,將sql語句中所要使用的參數先用「?」代替,然後依次將這些參數組成數組放在第二個參數中;
dataHandler:執行成功是調用的回調函數,通過該函數可以獲得查詢結果集;
errorHandler:執行失敗時調用的回調函數;
下面就做一個完整的實例,大家可以把代碼復制下來存到一個html頁面中,用chorme或火狐等支持html5的瀏覽器查看效果
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<title>HTML5本地存儲之本地資料庫篇</title>
<script type="text/javascript">
//打開資料庫
var db = openDatabase('contactdb','','local database demo',204800);
//保存數據
function save(){
var user_name = document.getElementById("user_name").value;
var mobilephone = document.getElementById("mobilephone").value;
var company = document.getElementById("company").value;
//創建時間
var time = new Date().getTime();
db.transaction(function(tx){
tx.executeSql('insert into contact values(?,?,?,?)',[user_name,mobilephone,company,time],onSuccess,onError);
});
}
//sql語句執行成功後執行的回調函數
function onSuccess(tx,rs){
alert("操作成功");
loadAll();
}
//sql語句執行失敗後執行的回調函數
function onError(tx,error){
alert("操作失敗,失敗信息:"+ error.message);
}
//將所有存儲在sqlLite資料庫中的聯系人全部取出來
function loadAll(){
var list = document.getElementById("list");
db.transaction(function(tx){
//如果數據表不存在,則創建數據表
tx.executeSql('create table if not exists contact(name text,phone text,company text,createtime INTEGER)',[]);
//查詢所有聯系人記錄
tx.executeSql('select * from contact',[],function(tx,rs){
if(rs.rows.length>0){
var result = "<table>";
result += "<tr><th>序號</th><th>姓名</th><th>手機</th><th>公司</th><th>添加時間</th><th>操作</th></tr>";
for(var i=0;i<rs.rows.length;i++){
var row = rs.rows.item(i);
//轉換時間,並格式化輸出
var time = new Date();
time.setTime(row.createtime);
var timeStr = time.format("yyyy-MM-dd hh:mm:ss");
//拼裝一個表格的行節點
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='刪除' onclick='del("+row.phone+")'/></td></tr>";
}
list.innerHTML = result;
}else{
list.innerHTML = "目前數據為空,趕緊開始加入聯系人吧";
}
});
});
}
//刪除聯系人信息
function del(phone){
db.transaction(function(tx){
//注意這里需要顯示的將傳入的參數phone轉變為字元串類型
tx.executeSql('delete from contact where phone=?',[String(phone)],onSuccess,onError);
});
}
//格式化時間的format函數
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;
}
</script>
<style>
.addDiv{
border: 2px dashed #ccc;
width:400px;
text-align:center;
}
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;
}
</style>
</head>
<body onload="loadAll()">
<div class="addDiv">
<label for="user_name">姓名:</label>
<input type="text" id="user_name" name="user_name" class="text"/>
<br/>
<label for="mobilephone">手機:</label>
<input type="text" id="mobilephone" name="mobilephone"/>
<br/>
<label for="mobilephone">公司:</label>
<input type="text" id="company" name="company"/>
<br/>
<input type="button" onclick="save()" value="新增記錄"/>
</div>
<br/>
<div id="list">
</div>
</body>
</html>
『貳』 HTML5怎麼連接資料庫
。。不是很准確。所謂html5是作為一種標准。而最終實現是需要瀏覽器內核支持。無論是顯示還是資料庫鏈接 和 瀏覽器內核有關。然後。html5 是支持SQLite的連接的。需要使用js的資料庫操作的一套api。chrome應該是比較好支持的 (5個月前 by 陸埜)
『叄』 HTML5 Web SQL 資料庫怎樣實現多表查詢
HTML5的Web SQL Databases(html5 本地資料庫)的確很誘惑人,當你發現可以用與mysql查詢一樣的查詢語句來操作本地資料庫時,你會發現這東西挺有趣的。今天,我們一起來了解HTML 5的Web SQL Database API:openDatabase、transaction、executeSql。
Web SQL資料庫API實際上不是HTML5規范的組成部分,而是單獨的規范。它通過一套API來操縱客戶端的資料庫。Safari、Chrome、Firefox、Opera等主流瀏覽器都已經支持Web SQL Database。HTML5的Web SQL Databases的確很誘惑人,當你發現可以用與mysql查詢一樣的查詢語句來操作本地資料庫時,你會發現這東西挺有趣的。今天,我們一起來了解HTML 5的Web SQL Database API。
下面將一一將介紹怎樣創建打開資料庫,創建表,添加數據,更新數據,刪除數據,刪除表 。
先介紹三個核心方法
1、openDatabase:這個方法使用現有資料庫或創建新資料庫創建資料庫對象。
2、transaction:這個方法允許我們根據情況控制事務提交或回滾。
3、executeSql:這個方法用於執行真實的SQL查詢。
第一步:打開連接並創建資料庫
代碼如下:
var dataBase = openDatabase("student", "1.0", "學生表", 1024 * 1024, function () { });
if (!dataBase) {
alert("資料庫創建失敗!");
} else {
alert("資料庫創建成功!");
}
解釋一下openDatabase方法打開一個已經存在的資料庫,如果資料庫不存在,它還可以創建資料庫。幾個參數意義分別是:
1,資料庫名稱。
2,版本號 目前為1.0,不管他,寫死就OK。
3,對資料庫的描述。
4,設置數據的大小。
5,回調函數(可省略)。
初次調用時創建資料庫,以後就是建立連接了。
創建的資料庫就存在本地,路徑如下:
C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\databases\http_localhost_4987 。
創建的是一個sqllite資料庫,可以用SQLiteSpy打開文件,可以看到裡面的數據。SQLiteSpy是一個綠色軟體,可以網路一下下載地址或SQLiteSpy官方下載:SQLiteSpy。
第二步:創建數據表
代碼如下:
this.createTable=function() {
dataBase.transaction( function(tx) {
tx.executeSql(
"create table if not exists stu (id REAL UNIQUE, name TEXT)",
[],
function(tx,result){ alert('創建stu表成功'); },
function(tx, error){ alert('創建stu表失敗:' + error.message);
});
});
}
解釋一下,
executeSql函數有四個參數,其意義分別是:
1)表示查詢的字元串,使用的SQL語言是SQLite 3.6.19。
2)插入到查詢中問號所在處的字元串數據。
3)成功時執行的回調函數。返回兩個參數:tx和執行的結果。
4)一個失敗時執行的回調函數。返回兩個參數:tx和失敗的錯誤信息。
第三步:執行增刪改查
1)添加數據:
代碼如下:
this.insert = function () {
dataBase.transaction(function (tx) {
tx.executeSql(
"insert into stu (id, name) values(?, ?)",
[id, '徐明祥'],
function () { alert('添加數據成功'); },
function (tx, error) { alert('添加數據失敗: ' + error.message);
} );
});
2)查詢數據
代碼如下:
this.query = function () {
dataBase.transaction(function (tx) {
tx.executeSql(
"select * from stu", [],
function (tx, result) { //執行成功的回調函數
//在這里對result 做你想要做的事情吧...........
},
function (tx, error) {
alert('查詢失敗: ' + error.message);
} );
});
}
解釋一下
上面代碼中執行成功的回調函數有一參數result。
result:查詢出來的數據集。其數據類型為 SQLResultSet ,就如同C#中的DataTable。
SQLResultSet 的定義為:
代碼如下:
interface SQLResultSet {
readonly attribute long insertId;
readonly attribute long rowsAffected;
readonly attribute SQLResultSetRowList rows;
};
其中最重要的屬性—SQLResultSetRowList 類型的 rows 是數據集的「行」 。
rows 有兩個屬性:length、item 。
故,獲取查詢結果的某一行某一列的值 :result.rows[i].item[fieldname] 。
3)更新數據
代碼如下:
this.update = function (id, name) {
dataBase.transaction(function (tx) {
tx.executeSql(
"update stu set name = ? where id= ?",
[name, id],
function (tx, result) {
},
function (tx, error) {
alert('更新失敗: ' + error.message);
});
});
}
4)刪除數據
代碼如下:
this.del = function (id) {
dataBase.transaction(function (tx) {
tx.executeSql(
"delete from stu where id= ?",
[id],
function (tx, result) {
},
function (tx, error) {
alert('刪除失敗: ' + error.message);
});
});
}
5)刪除數據表
代碼如下:
this.dropTable = function () {
dataBase.transaction(function (tx) {
tx.executeSql('drop table stu');
});
}
『肆』 HTML5的5種存儲方式詳解
引言
本篇文章主要介紹了前端HTML5幾種存儲方式的總結 ,主要包括本地存儲localstorage,本地存儲sessionstorage,離線緩存(application cache),Web SQL,IndexedDB。有興趣的可以了解一下。
正文開始~
h5之前,存儲主要是用cookies。cookies缺點有在請求頭上帶著數據,大小是4k之內。主Domain污染。
主要應用:購物車、客戶登錄
對於IE瀏覽器有UserData,大小是64k,只有IE瀏覽器支持。
目標
存儲方式:
以鍵值對(Key-Value)的方式存儲,永久存儲,永不失效,除非手動刪除。
大小:
每個域名5M
支持情況:
注意:IE9 localStorage不支持本地文件,需要將項目署到伺服器,才可以支持!
常用的API:
getItem //取記錄
setIten//設置記錄
removeItem//移除記錄
key//取key所對應的值
clear//清除記錄
存儲的內容:
數組,圖片,json,樣式,腳本。。。(只要是能序列化成字元串的內容都可以存儲)
HTML5 的本地存儲 API 中的 localStorage 與 sessionStorage 在使用方法上是相同的,區別在於 sessionStorage 在關閉頁面後即被清空,而 localStorage 則會一直保存。
本地緩存應用所需的文件
使用方法:
①配置manifest文件
頁面上:
Manifest 文件:
manifest 文件是簡單的文本文件,它告知瀏覽器被緩存的內容(以及不緩存的內容)。
manifest 文件可分為三個部分:
①CACHE MANIFEST - 在此標題下列出的文件將在首次下載後進行緩存
②NETWORK - 在此標題下列出的文件需要與伺服器的連接,且不會被緩存
③FALLBACK - 在此標題下列出的文件規定當頁面無法訪問時的回退頁面(比如 404 頁面)
完整demo:
伺服器上: manifest文件需要配置正確的MIME-type,即 "text/cache-manifest"。
如Tomcat:
常用API:
核心是applicationCache對象,有個status屬性,表示應用緩存的當前狀態:
0(UNCACHED) : 無緩存, 即沒有與頁面相關的應用緩存
1(IDLE) : 閑置,即應用緩存未得到更新
2 (CHECKING) : 檢查中,即正在下載描述文件並檢查更新
3 (DOWNLOADING) : 下載中,即應用緩存正在下載描述文件中指定的資源
4 (UPDATEREADY) : 更新完成,所有資源都已下載完畢
5 (IDLE) : 廢棄,即應用緩存的描述文件已經不存在了,因此頁面無法再訪問應用緩存
相關的事件:
表示應用緩存狀態的改變:
checking : 在瀏覽器為應用緩存查找更新時觸發
error : 在檢查更新或下載資源期間發送錯誤時觸發
noupdate : 在檢查描述文件發現文件無變化時觸發
downloading : 在開始下載應用緩存資源時觸發
progress:在文件下載應用緩存的過程中持續不斷地下載地觸發
updateready : 在頁面新的應用緩存下載完畢觸發
cached : 在應用緩存完整可用時觸發
Application Cache的三個優勢:
① 離線瀏覽
② 提升頁面載入速度
③ 降低伺服器壓力
注意事項:
1. 瀏覽器對緩存數據的容量限制可能不太一樣(某些瀏覽器設置的限制是每個站點 5MB)
2. 如果manifest文件,或者內部列舉的某一個文件不能正常下載,整個更新過程將視為失敗,瀏覽器繼續全部使用老的緩存
3. 引用manifest的html必須與manifest文件同源,在同一個域下
4. 瀏覽器會自動緩存引用manifest文件的HTML文件,這就導致如果改了HTML內容,也需要更新版本才能做到更新。
6. FALLBACK中的資源必須和manifest文件同源
7. 更新完版本後,必須刷新一次才會啟動新版本(會出現重刷一次頁面的情況),需要添加監聽版本事件。
8. 站點中的其他頁面即使沒有設置manifest屬性,請求的資源如果在緩存中也從緩存中訪問
9. 當manifest文件發生改變時,資源請求本身也會觸發更新
離線緩存與傳統瀏覽器緩存區別:
1. 離線緩存是針對整個應用,瀏覽器緩存是單個文件
2. 離線緩存斷網了還是可以打開頁面,瀏覽器緩存不行
3. 離線緩存可以主動通知瀏覽器更新資源
關系資料庫,通過SQL語句訪問
Web SQL 資料庫 API 並不是 HTML5 規范的一部分,但是它是一個獨立的規范,引入了一組使用 SQL 操作客戶端資料庫的 APIs。
支持情況:
Web SQL 資料庫可以在最新版的 Safari, Chrome 和 Opera 瀏覽器中工作。
核心方法:
①openDatabase: 這個方法使用現有的資料庫或者新建的資料庫創建一個資料庫對象。
②transaction: 這個方法讓我們能夠控制一個事務,以及基於這種情況執行提交或者回滾。
③executeSql: 這個方法用於執行實際的 SQL 查詢。
打開資料庫:
執行查詢操作:
插入數據:
讀取數據:
由這些操作可以看出,基本上都是用SQL語句進行資料庫的相關操作,如果你會MySQL的話,這個應該比較容易用。
索引資料庫 (IndexedDB) API(作為 HTML5 的一部分)對創建具有豐富本地存儲數據的數據密集型的離線 HTML5 Web 應用程序很有用。同時它還有助於本地緩存數據,使傳統在線 Web 應用程序(比如移動 Web 應用程序)能夠更快地運行和響應。
非同步API:
在IndexedDB大部分操作並不是我們常用的調用方法,返回結果的模式,而是請求——響應的模式,比如打開資料庫的操作
這樣,我們打開資料庫的時候,實質上返回了一個DB對象,而這個對象就在result中。由上圖可以看出,除了result之外。還有幾個重要的屬性就是onerror、onsuccess、onupgradeneeded(我們請求打開的資料庫的版本號和已經存在的資料庫版本號不一致的時候調用)。這就類似於我們的ajax請求那樣。我們發起了這個請求之後並不能確定它什麼時候才請求成功,所以需要在回調中處理一些邏輯。
關閉與刪除:
數據存儲:
indexedDB中沒有表的概念,而是objectStore,一個資料庫中可以包含多個objectStore,objectStore是一個靈活的數據結構,可以存放多種類型數據。也就是說一個objectStore相當於一張表,裡面存儲的每條數據和一個鍵相關聯。
我們可以使用每條記錄中的某個指定欄位作為鍵值(keyPath),也可以使用自動生成的遞增數字作為鍵值(keyGenerator),也可以不指定。選擇鍵的類型不同,objectStore可以存儲的數據結構也有差異。
學習從來不是一個人的事情,要有個相互監督的夥伴,想要學習或交流前端問題的小夥伴可以私信「學習」小明獲取web前端入門資料,一起學習,一起成長!
『伍』 怎樣使用HTML5中的Web SQL DataBase本地資料庫增刪改查
首先來看看怎樣創建資料庫:
1、創建資料庫
var db = window.openDatabase("mydata", "1.0","資料庫描述",20000);
//window.openDatabase("資料庫名字", "版本","資料庫描述",資料庫大小);
if(db)
alert("新建資料庫成功!");
2、怎樣連接資料庫
db.transaction(function(tx) {
tx.executeSql("CREATE TABLE test (id int UNIQUE, mytitle TEXT, timestamp REAL)");
});
上面是新建數據表!本地資料庫是通過db.transaction()函數來實現的,再看下面的代碼吧!
插入記錄:
db.transaction(function(tx) {
tx.executeSql("INSERT INTO test (mytitle, timestamp) values(?, ?)", ["WEB Database", new Date().getTime()], null, null);
});
更新記錄:
db.transaction(function(tx) {
tx.executeSql("update test set mytitle=? where mytitle = 'fsafdsaf'",['xp'],null,null);
});
查詢記錄:
db.transaction(function(tx) {
tx.executeSql("SELECT * FROM test", [],
function(tx, result) {
for(var i = 0; i < result.rows.length; i++){
document.write('<b>' + result.rows.item(i)['mytitle'] + '</b><br />');
}
}, function(){
alert("error");
});
});
刪除表:
db.transaction(function(tx) {
tx.executeSql("DROP TABLE test");
})
『陸』 Web前端開發知識點之HTML5概述
今天小編要跟大家分享的文章是關於Web前端開發知識點之HTML5概述。正在學習和從事Web前端學習和工作的小夥伴們來和小編一起看一看吧,希望本篇文章能夠對大家有所幫助。
HTML5發源於WorldWideWeb
Consortium(簡稱W3C),是Web標準的一種。它誕生於2004年8月W3C關於Web應用程序以及復合文檔(Compound
Documents)的研討會上,並於2010年正式推出。自推出以來,它便以驚人的速度被迅速推廣,就連微軟也因此為下一代IE9做了標准上的改進。HTML5是Web開發世界的一次重大改變,代表著未來趨勢。其目標是能夠創建更簡單的Web程序。書寫出更簡潔的HTML代碼。
HTML5的誕生具有劃時代、革命性的意義,它正在被大面積地推廣及使用。通過對Internet
Explore,Google,Firefox,Safari,Opera等主流Web瀏覽器發展策略的調查發現,它們均在對HTML5的支持上採取了相應的措施。
HTM15具有以下6點優勢:
1、跨平台運行、易用性
HTML5最主要的優勢在於其適合眾多平台,從PC瀏覽器到手機、平板電腦,甚至未來的智能電視,只要設備瀏覽器支持HTML5,HTML5應用或游戲在該平台中就可直接運行,這使得應用HTML5創建網站更加簡單。新的HTML主體結構元素和非主體結構元素如「article」、「section」、「nav」、「aside」、「time」、「pubdate」、「header」、「footer」、「address」等,使得文檔的結構更清晰明確,讀者更易訪問內容。例如,之前使用「div」,即使定義了「class」或者「id」也難以讓讀者清楚知道其真正的含義。使用新的語義學的定義標簽,可更好地了解HTML文檔,並創造出更人性化的用戶體驗。
2、支持多媒體播放
以前涉及多媒體播放,普遍的做法就是使用Flash或其他第三方自主開發的播放器應用,較為復雜且難以使用。而HTMI5支持直接在瀏覽器中播放音頻和視頻文件,不需要使用Adobe
Flash這樣的插件。HTML5通過標簽
『柒』 html5怎麼連接資料庫
在HTML5之前的時代,如果需要在客戶端本地保存數據,只能存儲在Cookie中,但是 Cookie使用過多會影響請求速度 ,所以並不適合存儲大量數據。
而在HTML5面世後,自帶了本地存儲和本地資料庫功能,更為便捷的管理客戶端數據。
HTML5提供了一個 基於瀏覽器端的資料庫 (WebSQL 、IndexedDB),我們可以通過JS API來在瀏覽器端創建一個本地資料庫,而且它還支持標準的SQL來執行CRUD操作。
如何查看本地的資料庫呢?通過各個 瀏覽器的調試工具 可以查看。
在HTML5中操作本地資料庫都是通過JS API來實現的,很簡單,步聚如下:
1、通過 openDatabase 創建資料庫對象
2、通過 db.transaction 設置回調函數
3、通過 executeSql 方法執行查詢
HTML5默認情況下是無法連接遠程資料庫的,一般都是通過API去操作資料庫。比如當下流行的前後端完全分離,藉助的就是RESTful來實現業務數據的CRUD操作。
怎麼會問這個問題,HTML是不可能鏈接資料庫的,他是標簽類語言,是用於構建靜態頁面的,要想鏈接資料庫必須得支持網路通信和IO的,顯然HTML並沒有支持,HTML只是用來設計頁面的。
我還以為我落伍了,h5連資料庫
『捌』 HTML5本地資料庫存儲數據代碼相關問題
一個網站如何能在客戶的瀏覽器存儲更多的數據呢?
在Html4的時代在瀏覽器端存儲點網站個性化的數據,尤其是用戶瀏覽器的痕跡,用戶的相關數據等一般只能存儲在Cookie中,但是大多是瀏覽器對於Cookie的限制也就逼迫網站存儲數據盡量精簡,想存儲復雜的、關系型的用戶數據就根本不可能了。但是進入Html5時代,這一切都不叫事...
一、本地存儲由來的背景
眾所周知Html4時代Cookie的大小、格式、存儲數據格式等限制,網站應用如果想在瀏覽器端存儲用戶的部分信息,那麼只能藉助於Cookie。但是Cookie的這些限制,也就導致了Cookie只能存儲一些ID之類的標識符等簡單的數據,復雜的數據就更別扯了。
下面是Cookie的限制:
1, 大多數瀏覽器支持最大為 4096 位元組的 Cookie。
2, 瀏覽器還限制站點可以在用戶計算機上存儲的 Cookie 的數量。大多數瀏覽器只允許每個站點存儲 20 個 Cookie;如果試圖存儲更多 Cookie,則最舊的 Cookie 便會被丟棄。
3, 有些瀏覽器還會對它們將接受的來自所有站點的 Cookie 總數作出絕對限制,通常為 300 個。
4, Cookie默認情況都會隨著Http請求發送到後台伺服器,但並不是所有請求都需要Cookie的,比如:js、css、圖片等請求則不需要cookie。
(1)setItem(key,value):添加本地存儲數據。兩個參數,非常簡單就不說了。
(2)getItem(key):通過key獲取相應的Value。
(3)removeItem(key):通過key刪除本地數據。
(4)clear():清空數據。
- <script type="text/javascript">
- //添加key-value 數據到 sessionStorage
- sessionStorage.setItem("demokey", "hek.com");
- //通過key來獲取value
- var dt = sessionStorage.getItem("demokey");
- alert(dt);
- //清空所有的key-value數據。
- //sessionStorage.clear();
- alert(sessionStorage.length);
- </script>
(1)setItem(key,value):添加本地存儲數據。兩個參數,非常簡單就不說了。
(2)getItem(key):通過key獲取相應的Value。
(3)removeItem(key):通過key刪除本地數據。
(4)clear():清空數據。
- <script type="text/javascript">
- //添加key-value 數據到 sessionStorage
- localStorage.setItem("demokey", "httpcom");
- //通過key來獲取value
- var dt = localStorage.getItem("demokey");
- alert(dt);
- //清空所有的key-value數據。
- //localStorage.clear();
- alert(localStorage.length);
- </script>
第一步:openDatabase方法:創建一個訪問資料庫的對象。
第二步:使用第一步創建的資料庫訪問對象來執行transaction方法,通過此方法可以設置一個開啟事務成功的事件響應方法,在事件響應方法中可以執行SQL.
第三步:通過executeSql方法執行查詢,當然查詢可以是:CRUD。
- //Demo:獲取或者創建一個資料庫,如果資料庫不存在那麼創建之
- var dataBase = openDatabase("student", "1.0", "學生表", 1024 * 1024, function () { });
1,資料庫名稱。
2,資料庫的版本號,目前來說傳個1.0就可以了,當然可以不填;
3,對資料庫的描述。
4,設置分配的資料庫的大小(單位是kb)。
5,回調函數(可省略)。
初次調用時創建資料庫,以後就是建立連接了。
- ts.executeSql(sqlQuery,[value1,value2..],dataHandler,errorHandler)
qlQuery:需要具體執行的sql語句,可以是create、select、update、delete;
value1,value2..]:sql語句中所有使用到的參數的數組,在executeSql方法中,將s>語句中所要使用的參數先用「?」代替,然後依次將這些參數組成數組放在第二個參數中
ataHandler:執行成功是調用的回調函數,通過該函數可以獲得查詢結果集;
4,errorHandler:執行失敗時調用的回調函數;
Html5的設計者們,一開始就為Html5能成為富客戶端做好了准備。為了破解Cookie的一系列限制,Html5通過JS的新的API就能直接存儲大量的數據到客戶端瀏覽器,而且支持復雜的本地資料庫,讓JS簡直就是逆天了。Html5支持兩種的WebStorage,一種是永久性的本地存儲(localStorage),另外一種是會話級別的本地存儲(sessionStorage)。
二、會話級別的本地存儲:sessionStorage
在Html5中增加了一個Js對象:sessionStorage;通過此對象可以直接操作存儲在瀏覽器中的會話級別的WebStorage。存儲在sessionStorage中的數據首先是Key-Value形式的,另外就是它跟瀏覽器當前會話相關,當會話結束後,數據會自動清除,跟未設置過期時間的Cookie類似。
sessionStorage提供了四個方法來輔助我們進行對本地存儲做相關操作。
對於JS的學習和調試必須得有Chrome的調試工具輔助才能事半功倍。當然Chrome也是我最喜愛的Web開發輔助工具,非常簡單F12快捷鍵就立即打開工具了,包括IE也是這個快捷鍵。通過下圖就可以查看當前瀏覽器中的sessionStorage數據。
參考在線演示demo
三、永久本地存儲:localStorage
在最新的JS的API中增加了localStorage對象,以便於用戶存儲永久存儲的Web端的數據。而且數據不會隨著Http請求發送到後台伺服器,而且存儲數據的大小機會不用考慮,因為在HTML5的標准中要求瀏覽器至少要支持到4MB.所以,這完全是顛覆了Cookie的限制,為Web應用在本地存儲復雜的用戶痕跡數據提供非常方便的技術支持。那接下里分別介紹一下localStorage的常用的方法,當然基本上跟sessionStorage是一致的。
localStorage提供了四個方法來輔助我們進行對本地存儲做相關操作。
四、逆天了本地資料庫
雖然Html5已經提供了功能強大的localStorage和sessionStorage,但是他們兩個都只能提供存儲簡單數據結構的數據,對於復雜的Web應用的數據卻無能為力。逆天的是Html5提供了一個瀏覽器端的資料庫支持,允許我們直接通JS的API在瀏覽器端創建一個本地的資料庫,而且支持標準的SQL的CRUD操作,讓離線的Web應用更加方便的存儲結構化的數據。接下里介紹一下本地數據的相關API和用法。
操作本地資料庫的最基本的步驟是:
接下來分別介紹一下相關的方法的參數和用法。
(1)openDatabase方法:
openDatabase方法打開一個已經存在的資料庫,如果資料庫不存在,它還可以創建資料庫。幾個參數意義分別是:
(2)db.transaction方法可以設置一個回調函數,此函數可以接受一個參數就是我們開啟的事務的對象。然後通過此對象可以進行執行Sql腳本,跟下面的步驟可以結合起來。
(3)通過executeSql方法執行查詢。
參數說明: