㈠ html5,什麼是本地存儲什麼是websql資料庫存儲
HTML5 :
將成為HTML、XHTML以及HTMLDOM的新標准。
HTML的上一個版本誕生於1999年。自從那以後,Web世界已經經歷了巨變。
HTML5仍處於完善之中。然而,大部分現代瀏覽器已經具備了某些HTML5支持。
本地存儲:
儲存在用戶本地終端上的數據,多數使用cookie
Cookie技術誕生以來,它就成了廣大網路用戶和Web開發人員爭論的一個焦點。有一些網路用戶,甚至包括一些資深的Web專家也對它的產生和推廣感到不滿,這並不是因為Cookie技術的功能太弱或其他技術性能上的原因,而是因為Cookie的使用對網路用戶的隱私構成了危害。因為Cookie是由Web伺服器保存在用戶瀏覽器上的小文本文件,它包含有關用戶的信息[2]。
websql資料庫存儲:
使用資料庫進行數據存儲,現在流行的資料庫有:
1、Access一般用在小網站上,類似企業站,功能比較簡單,對數據要求不高;
2、Mssql是一個比較大的完善的資料庫,在windows上常用,配NETASP等程序。
3、Mysql是一個小型的公開源代碼的免費資料庫,在windows,linux上都常用,和PHP程序組成一對完美搭檔。
㈡ 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本地資料庫Sqlite新建的本地資料庫保存在哪裡
如果用的Chrome瀏覽器
那麼SQLite資料庫就安裝到了$CHROME_HOME\User Data\Default\databases中
這個目錄中databases.db是當前用戶的所有創建的資料庫的配置,而file__0目錄則是資料庫表文件
其他瀏覽器也應該差不多
㈤ 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是什麼干什麼的
HTML的全稱是超文本標記語言,是一種標記語言。它包括一系列標簽,可以統一網路上文檔的格式,將分散的互聯網資源連接成一個邏輯整體。HTML是由HTML命令組成的描述性文本,可以解釋文字、圖形、動畫、聲音、表格、鏈接等。Html是一種用來描述網頁的語言。它被稱為超文本標記語言,它是一種標記語言。它包括一系列標簽,可以統一網路上文檔的格式,將分散的互聯網資源連接成一個邏輯整體。
㈦ html5網頁顯示資料庫內容
首先,你提到的Java Servlet是用來提供數據的,ajax是用來獲取數據的。
1、專後端用servlet、struts、springmvc等從資料庫取數據並屬轉換成json格式返回,前端用ajax獲取這些json數據。
2、後端用servlet、struts、springmvc等從資料庫取數據並將數據嵌到模板頁面里,前端用jsp、freemarker之類的模板語言直接寫for循環。
㈧ 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怎麼連接資料庫
HTML5連接資料庫分為以下幾步:
預備知識: SQL Database,Html5環境下可以用Js執行CRUD的Web資料庫組件。
核心方法如下:
1、openDatabase:這個方法使用現有資料庫或創建新資料庫創建資料庫對象。
2、transaction:這個方法允許我們根據情況控制事務提交或回滾。
3、executeSql:這個方法用於執行真實的SQL查詢。
第一步:打開連接並創建資料庫
var dataBase = openDatabase("student", "1.0", "student", 1024 * 1024, function () { });
if (!dataBase) {
alert("資料庫創建失敗!");
} else {
alert("資料庫創建成功!");
}
第二步:創建數據表
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);
});
});
}
第三步:執行增刪改查
添加數據:
this.insert = function () {
dataBase.transaction(function (tx) {
tx.executeSql(
"insert into stu (id, name) values(?, ?)",
[id, '徐明祥'],
function () { alert('添加數據成功'); },
function (tx, error) { alert('添加數據失敗: ' + error.message);
} );
});