- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Rust 的 rusqlite
用于从 sqlite 数据库插入和调用数据的 crate。
我正在使用 get()
其方法 Row
返回 Result<T>
。我有当前的代码片段:
while let Some(row) = rows.next()? {
let value = match row.get(0).expect("Could not get value from database cell.") {
// Do something here to specify types and return them or add them to a separate collection
};
}
如何指定类型?目前,我可以正确打开 get
的唯一方法函数的方法是将其分配给已经具有特定类型的变量,例如 let value: i64 = row.get(0).unwrap()
,但我不知道如何区分 get(0)
实际上是字符串、 bool 值或任何其他可接受的 SQL 类型。
我搜索了 match
的其他示例与 Result
,但它们的匹配枚举基于值,而不是类型。
最佳答案
How could I specify the type? Currently the only way I can properly unwrap the get function is by assigning it to a variable with a specific type already, like
let value: i64 = row.get(0).unwrap()
如果我正确理解你想要什么,你正在寻找 get_raw
和 get_raw_checked
返回 a ValueRef
enum这样您就可以在运行时检查检索到的值是什么类型:
while let Some(row) = rows.next()? {
let value = match row.get_raw(0) {
ValueRef::Null => ...
ValueRef::Integer(i) => ...
ValueRef::Real(f) => ...
ValueRef::Text(t) => ...
ValueRef::Blob(b) => ...
}
}
get
表示一个期望,如果违背期望,则返回一个 Err
,因为通常您知道存储在列中的值的类型应该 是的,如果有人在你下面替换了列或值的类型,那么一切都会被破坏。它还可以方便地处理various conversions因此您不必手动处理它们。
顺便说一句,如果您不想处理 get
可能出现的错误,您可以使用其兄弟 get_unwrap
.
关于sql - 如何对编译时不知道的类型使用 rusqlite 的 Row::get 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60396593/
我想对 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
我是一名优秀的程序员,十分优秀!