【发布时间】:2011-04-10 15:06:49
【问题描述】:
我正在开发一个支持离线的移动网络应用程序,需要在 HTML5 数据库中存储大量原始字节数据。我想尽可能紧凑地存储它们,因此不能选择连接字符串。这是一个示例代码,它创建一个数据库、表、插入数据并再次检索它。
例子:
var bytes=[97, 0, 6, 244, 98, 66, 76, 65, 131, 5, 7, 142, 81, 184, 112, 33];
openDatabase('_test_', 1.0, '_test-', 5000).transaction(function(tx) {
tx.executeSql("DROP TABLE IF EXISTS MYTABLE", [], function(){
tx.executeSql("CREATE TABLE IF NOT EXISTS MYTABLE(content BLOB);",[],function(){
tx.executeSql("INSERT INTO MYTABLE values(?)", [bytes],
function()
{
tx.executeSql("SELECT * FROM MYTABLE ", [], function(transaction, results)
{
console.log(results.rows.item(0))
});
},function(transaction, error){console.log(error)})
},function(transaction, error){console.log(error)})
})
})
我正在尝试按原样存储数组,它实际上保存为连接字符串:"97, 0, 6, 244, 98, 66, 76, 65, 131, 5, 7, 142, 81, 184, 112、33"。不是我需要的,因为它太大了。
我现在正在将数组转换为字符串:
openDatabase('_test_', 1.0, '_test-', 5000).transaction(function(tx) {
tx.executeSql("DROP TABLE IF EXISTS MYTABLE", [], function(){
tx.executeSql("CREATE TABLE IF NOT EXISTS MYTABLE(content BLOB); ", [], function(){
tx.executeSql("INSERT INTO MYTABLE values(?)", [s],
function()
{
tx.executeSql("SELECT * FROM MYTABLE ", [], function(transaction, results)
{
console.log(results.rows.item(0))
});
},function(transaction, error){console.log(error)})
},function(transaction, error){console.log(error)})
})
})
DB 现在返回的只是“a”。
所以我的问题是如何在不使用连接字符串的情况下序列化 HTML5 数据库中的 javascript 字节数组?
【问题讨论】:
-
为什么你的数组中有`'0',这是一个空字符?
-
数据只包含一个值为 0 的字节。有意义吗?
标签: javascript database sqlite html