rusqlite
,目前在将 prepare
和 query
与 sql 查询 SELECT COUNT(*) FROM test_table
结合使用时遇到问题。
如何返回表中当前的行数?
我当前的代码如下所示:
let mut stmt = conn.prepare("SELECT COUNT(*) FROM test_table").unwrap();
let mut result = match stmt.query([]) {
Ok(conn) => conn,
Err(err) => return Err(&err),
};
问题是如何相应地返回结果。
要使用
rusqlite
获取表中的当前行数,您可以使用 query_row
方法,这是从数据库获取单个结果的更简单、更直接的方法。以下是如何修改代码以从 test_table
检索行数:
use rusqlite::{Connection, Result};
fn get_row_count(conn: &Connection) -> Result<i64> {
let mut stmt = conn.prepare("SELECT COUNT(*) FROM test_table")?;
let count: i64 = stmt.query_row([], |row| row.get(0))?;
Ok(count)
}
fn main() -> Result<()> {
let conn = Connection::open("my_database.db")?;
match get_row_count(&conn) {
Ok(count) => println!("Number of rows in the table: {}", count),
Err(err) => eprintln!("Error: {}", err),
}
Ok(())
}