我正在开发一个可脱机的移动Web应用程序,并需要在HTML5数据库中存储大量原始字节数据。我想将它们存储为尽可能紧凑,所以加入的字符串不是一个选项。以下是创建数据库表的示例代码,插入数据并再次检索数据。在HTML5 sqlite数据库中存储字节数组
实施例:
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现在返回简直是“一个”。
所以我的问题是如何序列化HTML5数据库中的JavaScript字节数组而不诉诸连接的字符串?
为什么你的数组中有'0',它是一个空字符? – Benoit 2011-04-10 15:11:11
数据只包含一个值为0的字节。有意义吗? – 2011-04-10 15:14:09