将Javascript ArrayBuffer另存为SQLite中的BLOB

将Javascript ArrayBuffer另存为SQLite中的BLOB,javascript,sqlite,cordova,Javascript,Sqlite,Cordova,我有一个大文本,我想在SQLite数据库中保存为BLOB。我在其他帖子中了解到,字符串在保存为BLOB之前需要转换为ByteArray。下面是我的函数,它将字符串转换为ByteArray,但在将此ArrayBuffer插入数据库时,它将另存为Object string[Object ArrayBuffer]。这是因为我假设Javascript ArrayBuffer与SQLite不兼容。您能帮助我如何将此ArrayBuffer存储为BLOB而不转换为字符串吗 function str2ab(st

我有一个大文本,我想在SQLite数据库中保存为BLOB。我在其他帖子中了解到,字符串在保存为BLOB之前需要转换为ByteArray。下面是我的函数,它将字符串转换为ByteArray,但在将此ArrayBuffer插入数据库时,它将另存为Object string
[Object ArrayBuffer]
。这是因为我假设Javascript ArrayBuffer与SQLite不兼容。您能帮助我如何将此ArrayBuffer存储为BLOB而不转换为字符串吗

function str2ab(str) {
  var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
  var bufView = new Uint16Array(buf);
  for (var i=0, strLen=str.length; i < strLen; i++) {
    bufView[i] = str.charCodeAt(i);
  }
  return bufView;
}
函数str2ab(str){
var buf=new ArrayBuffer(str.length*2);//每个字符2个字节
var bufView=新UINT16阵列(buf);
对于(变量i=0,strLen=str.length;i
为什么是blob而不是字符串?我的字符串非常大,当我将其保存为文本时,它在获取它时为空。
TEXT
不受SQLite的限制,因此我认为还有其他问题。请检查字符串或blob部分的最大长度限制。也许这个限制设置得更低,或者你的文本超过了默认的1GB文本限制:)此外,文档暗示如果你不能写那么大的字符串,你也不能写那么大的blob。