HTML5数据库管理/内省?
问题描述:
我正在玩HTML客户端存储,并想知道是否有任何数据库内省的设施 - 是否有相当于sqlite“.tables”或“.schema”?HTML5数据库管理/内省?
此外,我没有看到我的表出现在AppData \ Local \ Apple Computer \ Safari \ LocalStorage中。是否有另一个地方的表格存储?
答
Safari将表格存储在“AppData \ Local \ Apple Computer \ Safari \ Databases”中。
第一个Databases.db是一个包含两个表的sqlite3数据库。
Origins跟踪哪个站点为该数据库创建了数据库和最大存储空间。
数据库跟踪特定的数据库及其文件夹,共同和文件名
我使用sqlite3的命令行工具或有时SQLite的管理员。任何sqlite3应用程序都可以。
你的数据库将像http_exeample_com_0的子文件夹\ 00000000003.db
答
select * from sqlite_master;
该表具有类型(“表”或“指数”),名称,tbl_name,SQL(相当于列什么.schema输出)
答
我已经创建了一个脚本来显示数据库的内容。
<!DOCTYPE html>
<html>
<head>
<title>sqlite database</title>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
var db;
function openDB(shortName, version, displayName, maxSize){
try{
if(window.openDatabase)
{
db = openDatabase(shortName, version, displayName, maxSize);
}
else
{
alert("Your browser does not have a sqlite database");
}
}catch(e){
alert(e);
}
}
function executeQuery($query,callback,errorcallback){
try{
if(window.openDatabase){
db.transaction(function(tx){
tx.executeSql($query,[],function(tx,result){
if(typeof callback == "function"){
callback(result);
}else{
if(callback != undefined){
eval(callback+"(result)");
}
}
},function(tx,error){
if(typeof errorcallback == "function"){
errorcallback(error);
}else{
if(errorcallback != undefined){
eval(errorcallback+"(error)");
}
}
});
});
}
}catch(e){
alert(e);
}
}
$(function(){
openDB("dbname", "1.0", "Display Name", 2 * 1024 * 1024/*size of db*/);
executeQuery("SELECT name FROM sqlite_master WHERE type='table'", function(tables)
{
var tableNames = new Array();
for(var i = 1; i < tables.rows.length; i++)//i starts at 1 to skip over the "__WebKitDatabaseInfoTable__" table
{
tableNames.push(tables.rows.item(i).name);
}
var count = 0;
for(var i = 0; i < tableNames.length; i++)//if there is no information in the table we cannot get the column names;
{
executeQuery("SELECT * FROM " + tableNames[i], function(results){
var columnNames = new Array();
var table = "<div class='tableName'>" + tableNames[count++] + "</div><table cellspacing='0' cellspacing='0' class='table'>";
if(results.rows.length > 0)
{
table += "<tr class='headerRow'>";
for(var column in results.rows.item(0))
{
columnNames.push(column);
table += "<th class='columnName'>" + column + "</th>";
}
table += "</tr>"
for(var i = 0; i < results.rows.length; i++)
{
table += "<tr class='tableRow'>";
for(var columnName in columnNames)
{
table += "<td class='tableEntry'>" + results.rows.item(i)[columnNames[columnName]] + "</td>";
}
table += "</tr>";
}
}
else
{
table += "<tr><td>empty</td></tr>";
}
table += "</table>";
$("body").append(table);
}, function(error){
alert(error.message);
});
}
}, function(error){
alert(error.message);
});
});
</script>
<style type="text/css">
.tableName{
font-variant: small-caps;
font-size: 20px;
margin-top: 15px;
}
.headerRow{
background-color: #ff0;
}
.columnName{
border: 1px solid #000;
padding: 2px 10px;
}
.tableRow{
background-color: #AFA;
}
.tableEntry{
border: 1px solid #000;
padding: 2px 10px;
}
.table{
border: 1px solid #000;
}
</style>
</head>
<body>
</body>
</html>