erlang-sqlite3 如何使用绑定参数执行插入语句
erlang-sqlite3 How to execute insert statement with binded parameters
我已尝试执行准备好的插入语句,但找不到可以执行准备代码的函数。
让我们创建一个测试数据库:
打开数据库:
{ok,Pid3} = sqlite3:open(db3).
创建table:
Sql1 =<<"CREATE TABLE test (
id INTEGER PRIMARY KEY,
ts TEXT default (datetime('now')),
key TEXT,
val TEXT
);">>.
sqlite3:sql_exec(db3,Sql1).
准备带参数的插入语句:
Sql2. =<<"insert into test (key,val) values (@p_key,@p_val);">>.
{ok,B1} = sqlite2:prepare(db3,Sql2).
现在绑定值:
sqlite3:bind(db3,B1,[{'@p_key',<<"test_key2">>},{'@p_val',<<"test_val2">>}]).
看起来唯一适合的函数是:
sql_exec(db(), iodata(), [sql_value() | {atom() | string() | integer(), sql_value()}])
但它不接受绑定引用 (pid())
有什么想法吗?
我自己没试过,但是根据 SQLite docs,你需要在准备好的语句上调用 sqlite3_step
C 函数来 运行 它。看起来这个函数映射到 erlang-sqlite3 中的 sqlite3:next/2
,所以我认为你需要这样做
sqlite3:next(db3, R1). %% Is it R1 or B1?
我已尝试执行准备好的插入语句,但找不到可以执行准备代码的函数。
让我们创建一个测试数据库:
打开数据库:
{ok,Pid3} = sqlite3:open(db3).
创建table:
Sql1 =<<"CREATE TABLE test (
id INTEGER PRIMARY KEY,
ts TEXT default (datetime('now')),
key TEXT,
val TEXT
);">>.
sqlite3:sql_exec(db3,Sql1).
准备带参数的插入语句:
Sql2. =<<"insert into test (key,val) values (@p_key,@p_val);">>.
{ok,B1} = sqlite2:prepare(db3,Sql2).
现在绑定值:
sqlite3:bind(db3,B1,[{'@p_key',<<"test_key2">>},{'@p_val',<<"test_val2">>}]).
看起来唯一适合的函数是:
sql_exec(db(), iodata(), [sql_value() | {atom() | string() | integer(), sql_value()}])
但它不接受绑定引用 (pid())
有什么想法吗?
我自己没试过,但是根据 SQLite docs,你需要在准备好的语句上调用 sqlite3_step
C 函数来 运行 它。看起来这个函数映射到 erlang-sqlite3 中的 sqlite3:next/2
,所以我认为你需要这样做
sqlite3:next(db3, R1). %% Is it R1 or B1?