您的位置:首页 > 科技 > 能源 > 济南做网站公司_郑州企业如何建网站_企业营销策划方案范文_软文推荐

济南做网站公司_郑州企业如何建网站_企业营销策划方案范文_软文推荐

2025/5/7 0:52:46 来源:https://blog.csdn.net/a759329151/article/details/143444849  浏览:    关键词:济南做网站公司_郑州企业如何建网站_企业营销策划方案范文_软文推荐
济南做网站公司_郑州企业如何建网站_企业营销策划方案范文_软文推荐
问题      回答    解释
如何连接数据库1.在Cargo.toml中添加 mysql 依赖项
  mysql = "21.0.0"
2.在src/db/db.rs中写连接数据库的代码
  use mysql::*;
  use mysql::prelude::*
 
  pub fn init_pool() -> Result<Pool> {
    let url = "mysql://root:123456@localhost:3306/dr_platform"
    Pool::new(url)
  }

 pub fn test_connection(pool: &Pool) -> mysql::Result<()>{
    let mut conn = pool.get_conn()?;

    let result: Vec<User> = conn.query_map("SELECT * from users", |row|{
       User::from_row(row)
    })

    for user in &result {
       println!("{:?}", user);
    }

    Ok(())
 }
->:返回值
Result:枚举类型  可能会产生
两种结果,成功或失败
  enum Result<T, E> {
    OK(T),
    Err(E),
  }
  Result没有指定这两个参数时,通常是在泛型上下文中,具体类型在其他地方被指定了

mysql::Result<()>: T被替换成了(), 即单元类型,表示这个函数不返回值

 let mut conn = pool.get_conn()?;  ?用户传播错误
  
? :如果get_conn返回的Err变体,则?会提前返回,并将错误传给调用者
  为什么不用::而用.   .调用对象的方法   ::访问关联函数或者静态方法

let result: Vec<User> 声明result变量 类型为
Vec<User>
conn.query_map("SELECT * from users",|row| {   调用conn的query_map   |row|为闭包参数


 
3.在 src/models/user.rs中写接口体接收查到得数据
use mysql::{prelude::*};

#[derive(Debug)]
pub struct User {
    pub id: i32,
    username: String
}

impl User {
    pub fn from_row(row: mysql::Row) -> Self {
        User {
            id:row.get("id").expect("REASON"),
            username:row.get("username").expect("REASON")
        }
    }
}


 
expect:是一个Option类型上定义的方法
  Option类型是一个
枚举值类型,它可以有两个值,一个是Some(T)  一个是None,
  当使用get检索数据时,如果键值存在,返回Some(T), 如果键值不存在,返回None,会引发一个带有指定消息(这里时REASON)的panic错误

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com