代码之家  ›  专栏  ›  技术社区  ›  trwartek

如何在rustqlite中使用SQLite SELECT COUNT(*)函数?

  •  0
  • trwartek  · 技术社区  · 1 年前

    我正在使用 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),
    };
    

    问题是如何相应地返回结果。

    1 回复  |  直到 1 年前
        1
  •  0
  •   Alex    1 年前

    要获取表中的当前行数,请使用 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(())
    }
    
    推荐文章