【rust实战】rust博客系统4_连接数据库及查询数据

news2024/11/6 20:20:07
问题      回答    解释
如何连接数据库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错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2234498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

健身房管理智能化:SpringBoot技术指南

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了健身房管理系统的开发全过程。通过分析健身房管理系统管理的不足&#xff0c;创建了一个计算机管理健身房管理系统的方案。文章介绍了健身房管理系统的系统分析部…

Abaqus随机骨料过渡区孔隙三维网格插件:Random Agg ITZ Pore 3D (Mesh)

插件介绍 Random Agg ITZ Pore 3D (Mesh) V1.0 - AbyssFish 插件可在Abaqus内参数化建立包含水泥浆基体、粗细骨料、界面过渡区&#xff08;ITZ&#xff09;、孔隙在内的多相材料混凝土细观背景网格模型。 模型说明 插件采用材料映射单元的方式&#xff0c;将不同相材料赋值…

lora训练模型 打造个人IP

准备工作 下载秋叶炼丹器整理自己的照片下载底膜 https://rentry.org/lycoris-experiments 实操步骤 解压整合包 lora-scripts,先点击“更新” 训练图片收集 比如要训练一个自己头像的模型&#xff0c;就可以拍一些自己的照片&#xff08;20-50张&#xff0c;最少15张&…

sheng的学习笔记-tidb框架原理

目录 TiDB整体架构 TiDB架构图 组件-TiDB Server 架构图 流程 关系型数据转成kv ​编辑 组件-TiKV Server​ 架构图 主要功能&#xff1a; 列簇 组件-列存储TiFlash 组件-分布式协调层&#xff1a;PD PD架构图 路由 Region Cache back off TSO分配 概念 解…

计算机网络:网络层 —— 边界网关协议 BGP

文章目录 路由选择协议动态路由协议边界网关协议 BGPBGP 的基本概念BGP-4 的四种报文 路由选择协议 因特网是全球最大的互联网&#xff0c;它所采取的路由选择协议具有以下三个主要特点&#xff1a; 自适应&#xff1a;因特网采用动态路由选择&#xff0c;能较好地适应网络状态…

【在Linux世界中追寻伟大的One Piece】多路转接select

目录 1 -> I/O多路转接之select 1.1 -> 初识select 1.2 -> select函数原型 1.3 -> 关于fd_set结构 1.4 -> 关于timeval结构 2 -> 理解select执行过程 2.1 -> Socket就绪条件 2.2 -> select特点 2.3 -> select缺点 3 -> select使用示例…

小语言模型介绍与LLM的比较

小模型介绍 小语言模型&#xff08;SLM&#xff09;与大语言模型&#xff08;LLM&#xff09;相比&#xff0c;具有不同的特点和应用场景。大语言模型通常拥有大量的参数&#xff08;如 GPT-3 拥有 1750 亿个参数&#xff09;&#xff0c;能够处理复杂的自然语言任务&#xff…

双11花了“一部手机钱”买手机壳的年轻人,究竟在买什么?

【潮汐商业评论/原创】 这个双十一&#xff0c;Elsa在天猫多了一笔新支出——手机壳。和大家都熟悉的“义乌制造”不同的是&#xff0c;她的手机壳支出单件就已经到了500块&#xff0c;加上配套的手机链、支架、卡包、耳机壳&#xff0c;总共1000多元&#xff0c;足够买一部学…

03WIFI与蓝牙1——基于全志V3S的Linux开发板教程笔记

1. Kernel支持 1&#xff09;配置 终端输入&#xff1a; make menuconfig使能如下部分&#xff1a; 2&#xff09;编译 保存并退出后编译内核&#xff1a; make licheepi_zero_defconfig make menuconfig #配置内核&#xff0c;有需要的话配置 make -j16 make -j16 modu…

02系统跑起来——基于全志V3S的Linux开发板教程笔记

开发环境&#xff1a;Linux系统为Ubuntu 18.04.6 LTS&#xff0c;如在下面操作中提示部分环境/工具缺失未安装&#xff0c;请单独安装。 硬件基本介绍请参考第一篇文章&#xff1a;基于全志V3S的Linux开发板学习笔记01——简介 1. 环境准备 推荐直接下载完整资源包&#xff0c;…

用户思维,才是银行理财的杀手锏

近些年&#xff0c;伴随着居民理财需求的迸发&#xff0c;银行理财市场规模逐步扩大。 在前不久的2024Inclusion外滩大会上&#xff0c;麦肯锡发布了《银行理财六大趋势》&#xff0c;其中提到在财富管理客户风险偏好普遍下移的大背景下&#xff0c;银行理财将是客户财富管理配…

信息安全工程师(79)网络安全测评概况

一、定义与目的 网络安全测评是指参照一定的标准规范要求&#xff0c;通过一系列的技术、管理方法&#xff0c;获取评估对象的网络安全状况信息&#xff0c;并对其给出相应的网络安全情况综合判定。其对象主要为信息系统的组成要素或信息系统自身。网络安全测评的目的是为了提高…

学习笔记:微服务技术栈(一)服务治理框架SpringCloud

教学视频链接&#xff1a; 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 目录 前言一、认识微服务1.1 服务架构1.2 微服务架构1.3 SpringCloud 二、服务拆分及远程调用2.1 服务拆分细节2.2 服务间调用 …

医院数字影像信息系统源码,拥有完整知识产权,能够同HIS、电子病历、体检系统无缝对接

数字医学影像系统源码&#xff0c;RIS/PACS系统源码&#xff0c;医院数字影像信息系统源码。 开发技术&#xff1a;基于C/S架构&#xff0c;C#开发语言&#xff0c;数据库服务器采用Oracle数据库。三甲以下的医院都能满足 医学影像系统PACS系统是应用在医院影像科室的系统&…

LabVIEW for Linux 介绍

LabVIEW for Linux 介绍 1. 兼容性 LabVIEW for Linux 设计用于多种 Linux 发行版&#xff0c;包括 CentOS、Ubuntu 等。在安装之前&#xff0c;务必检查与您特定发行版版本的兼容性。 2. 程序移植 可移植性&#xff1a;在许多情况下&#xff0c;LabVIEW 程序&#xff08;VI…

使用NVM自由切换nodejs版本

一、NVM介绍 在日常开发中&#xff0c;我们可能需要同时进行多个不同NodeJS版本的项目开发&#xff0c;每个项目所依赖的nodejs版本可能不一致&#xff0c;我们如果只安装一个版本的nodejs&#xff0c;就可能出现node版本冲突问题&#xff0c;导致项目无法启动。这种情况下&am…

职场日常:多年的测试工程师如何继续在测试行业中砥砺前行

大家好&#xff0c;今天我们一起聊聊测试工程师在职业、在团队、在家庭中如何更好的做好角色。 作为一个工作了多年测试工作的大牛来说&#xff0c;从今天开始或许未来会因为各个方面的原因可能不在从事软件测试了&#xff0c;但是会继续总结过往的经验&#xff0c;从事这么多…

文件操作:Xml转Excel

1 添加依赖 Spire.Xls.jar <dependency><groupId>e-iceblue</groupId><artifactId>spire.xls</artifactId><version>5.3.3</version></dependency>2 代码使用 package cctd.controller;import com.spire.xls.FileFormat; im…

【Homework】【1--3】Learning resources for DQ Robotics in MATLAB

Learning resources for DQ Robotics in MATLAB Lesson 1 代码 % Step 2: Define the real numbers a1 and a2 a1 123; a2 321;% Step 3: Calculate and display a3 a1 a2 a3 a1 a2; disp([a3 (a1 a2) , num2str(a3)])% Step 4: Calculate and display a3 a1 * a2 a3…

「Mac畅玩鸿蒙与硬件24」UI互动应用篇1 - 灯光控制小项目

本篇将带领你实现一个互动性十足的灯光控制小项目&#xff0c;用户可以通过点击按钮来控制灯光的开关。该项目将涉及状态管理、动态图片加载以及按钮交互&#xff0c;是学习鸿蒙应用开发的重要基础。 关键词 UI互动应用状态管理动态图片加载用户交互 一、功能说明 在这个灯光…