首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绑定node-sqlite3中的blob参数

绑定node-sqlite3中的blob参数
EN

Stack Overflow用户
提问于 2018-03-05 21:25:04
回答 2查看 1.3K关注 0票数 2

我有一个带有BLOB主键(id)的SQLite3表:

代码语言:javascript
复制
CREATE TABLE item (
    id BLOB PRIMARY KEY,
    title VARCHAR(100)
);

在javascript模型中,主键(id)表示为Javascript字符串(每个字符一个十六进制字节):

代码语言:javascript
复制
var item = { 
    id: "2202D1B511604790922E5A090C81E169",
    title: "foo"
}

当我运行下面的查询时,id参数被绑定为一个字符串。但我需要将它绑定为BLOB。

代码语言:javascript
复制
db.run('INSERT INTO item (id, title) VALUES ($id, $title)', {
    $id: item.id,
    $title: item.title
});

为了说明这一点,上面的代码生成以下SQL:

代码语言:javascript
复制
INSERT INTO item (id, title) VALUES ("2202D1B511604790922E5A090C81E169", "foo");

我需要的是:

代码语言:javascript
复制
INSERT INTO item (id, title) VALUES (X'2202D1B511604790922E5A090C81E169', "foo");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-20 20:53:33

显然,字符串需要转换为缓冲区:

代码语言:javascript
复制
db.run('INSERT INTO item (id, title) VALUES ($id, $title)', {
    $id: Buffer.from(item.id, 'hex'),
    $title: item.title
});
票数 1
EN

Stack Overflow用户

发布于 2018-03-06 05:03:27

尝试将字符串转换为blob:

代码语言:javascript
复制
INSERT INTO item(id, title) VALUES(CAST(id_string AS BLOB), 'foo');

另请注意,在SQL中引用字符串的正确方法是使用单引号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49111508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档