- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下代码无法编译:
55 | (":dataset_id", &dataset_id),
| ^^^^^^^^^^^ expected `u32`, found `i32`
pub fn save(&mut self, annotations: Vec<Record>, dataset_id: i32) -> Result<(), Error> {
let mut tx = self.conn.transaction()?;
for record in records {
let json: String = record();
let sql: &str =
"INSERT INTO records (record_id, dataset_id, value)
VALUES (:record_id, :dataset_id, :value)";
let mut statement = tx.prepare(sql)?;
statement.execute(&[
(":record_id", &record.id),
(":dataset_id", &dataset_id),
(":value", "hello world")]);
};
tx.commit()?;
Ok(())
}
如果我从 SQL 语句中删除 dataset_id 并注释掉以下行:
(":dataset_id", &dataset_id),
然后它无法编译:
56 | (":value", &"hello".to_string()),
| ^^^^^^^^^^^^^^^^^^^^ expected `u32`, found struct `std::string::String`
最佳答案
execute
的参数是 P: Params
,即“任何实现 Params
的类型”。 Rust 编译器不会猜测您想要什么特定类型,然后相应地处理参数。相反,它只会自行解析参数的类型,然后查看它是否实现了 Params
.
这是你的论点:
&[(":record_id", &record.id),
(":dataset_id", &dataset_id),
(":value", "hello world")]
就其本身而言,类型是什么?它是对包含三个元组的数组文字的引用:a
(&str, &u32)
,
(&str, &i32)
, 和
(&str, &str)
.
&i32
转换为
&u32
”的错误消息。
(&str, &dyn ToSql)
元组。
&[(":record_id", &record.id as &dyn ToSql),
(":dataset_id", &dataset_id),
(":value", "hello world")]
或者第二个,使用
named_params!
宏那个
rusqlite
提供,可以说更漂亮:
statement.execute(named_params!{
":record_id": record.id,
":dataset_id": dataset_id,
":value": "hello world",
});
关于Rust rusqlite 无法插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67564780/
我想对 rusqlite 使用准备好的语句. Rusqlite 为 String、&str 和 a bunch of other types 实现了特征 ToSql : extern crate ru
以下代码无法编译: 55 | (":dataset_id", &dataset_id), | ^^
rustc 1.38.0 (625451e37 2019-09-23) rusqlite 0.20.0 我正在编写一个程序,我需要从 sqlite 刚刚创建的最后一次插入中取回 id。 db.exec
我正在尝试编写一个返回 rusqlite::MappedRows 的方法: pub fn dump(&self) -> MappedRows where F: FnMut(&Row) -> D
有很多文章解释了 SQLite 的多线程访问问题,但我找不到任何简单的解决方案。如何从例如访问 SQLite多个线程同时工作的 Web 服务器? 来源(仍然没有解释任何简单的解决方法): SQLite
我需要使用 rusqlite 将具有值 null 的字符串转换为 SQLite DB 中的实际 null 值。我无法控制这些字符串值。我找到了 Null 结构,但我不确定如何简洁地将其作为参数传递,然
我需要使用 rusqlite 将具有值 null 的字符串转换为 SQLite DB 中的实际 null 值。我无法控制这些字符串值。我找到了 Null 结构,但我不确定如何简洁地将其作为参数传递,然
我在 rusqlite 中阅读了以下内容文档: Connection::open(path) is equivalent to Connection::open_with_flags(path, SQ
我有一个带有 NaiveDate 字段的结构,我想将这个字段插入到一个表中。这是我的全部代码 use chrono::naive::NaiveDate; use rusqlite::{params,
我需要使用 SELECT 和 WHERE 从数据库中获取一行,我需要根据年龄获取一行,我使用其他教程尝试了这种方式。 use rusqlite::{params, Connection, Result
我正在使用 Rust 的 rusqlite用于从 sqlite 数据库插入和调用数据的 crate。 我正在使用 get()其方法 Row 返回 Result 。我有当前的代码片段: while le
我尝试使用 rusqlite 执行一个简单的 sqlite 语句,但每次都会出错。 let seconds = 1; conn.execute( "DELETE FROM session WH
我正在尝试在我的 Rust 项目中添加 sqlite 支持。 I found rusqlite on crates.io.我将版本行添加到 Cargo.toml。我添加了一些我在 rusqlite d
这个问题在这里已经有了答案: Why can't I store a value and a reference to that value in the same struct? (4 个答案)
我有这个工作代码: extern crate rusqlite; use rusqlite::Connection; fn main() { let conn = Connection::op
我正在尝试从 serde_json::Map 序列化 JSON 值到 SQLite 数据库中。我想在 Map 中使用多种数据类型并将它们转换为适当的 SQLite 数据类型。 map 创建于 coll
为了使用 rusqlite 加快插入 SQLite 数据库的速度,我想在 for 循环中构建一个事务,并且只提交每 N 次迭代。 下面的代码可以编译,但它构建了一个事务并一次性提交: use rusq
我是一名优秀的程序员,十分优秀!