當前位置:首頁 » 操作系統 » html5資料庫操作

html5資料庫操作

發布時間: 2022-10-24 07:44:56

『壹』 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通過標簽