当前位置: 首页 > news >正文

saas建站是什么意思不登陆不收费的网站链接

saas建站是什么意思,不登陆不收费的网站链接,页面布局,闵行区学生成长空间查询 本部分是对 「Rust入门系列」Rust 中使用 MySQL[1]的学习与记录 经常使用的时间处理库#xff1a; chrono 流式查询使用#xff1a; query_iter 输出到Vec使用#xff1a; query 映射到结构体使用#xff1a; query_map 获取单条数据使用#xff1a; query_first 命名… 查询 本部分是对 「Rust入门系列」Rust 中使用 MySQL[1]的学习与记录 经常使用的时间处理库 chrono 流式查询使用 query_iter 输出到Vec使用 query 映射到结构体使用 query_map 获取单条数据使用 query_first 命名参数查询使用 exec_first CREATE TABLE student (  id int(11) NOT NULL AUTO_INCREMENT,  name varchar(128) NOT NULL,  age int(11) NOT NULL,  id_card varchar(128) NOT NULL,  last_update date NOT NULL,  PRIMARY KEY (id)) ENGINEInnoDB DEFAULT CHARSETutf8mb4;-- 插入测试数据insert into student (name, age, id_card, last_update) values (张三, 23, 123456789X, CURRENT_DATE());insert into student (name, age, id_card, last_update) values (李四, 24, 8382353902, CURRENT_DATE()) 注意mysql[2]这个crate新版本demo有问题文档的更新速度跟不上代码的修改脚步.. 需要指定版本 [dependencies] mysql 20.0.0 #通配符*表示可以使用任何版本通常会拉取最新版本此处需要指定不使用最新版本流式查询 use chrono::prelude::*;// 用来处理日期use mysql::*;use mysql::prelude::*;fn main() {    let url  mysql://root:12345678localhost:3306/shuang;    let pool  Pool::new(url).unwrap(); // 获取连接池    let mut conn  pool.get_conn().unwrap();// 获取链接    conn.query_iter(select * from student)        .unwrap()        .for_each(|row| {            let r: (i32, String, i32, String, NaiveDate)  from_row(row.unwrap());            println!({}, {},{},{}, {:?}, r.0, r.1, r.2, r.3, r.4);        });} row的类型是mysql_common::row::Row其把数据以字节的形式存储。 所以需将低级的字节转换成想要的类型 如i32,String这里使用了from_row。注意转换后的数据以元组的形式返回其中每一项和选择列的顺序相同。 输出 1, 张三,23,123456789X, 2022-04-262, 李四,24,8382353902, 2022-04-26 流式查询 其实还可以将查询结果收集到Vec中。 Vec中的每个元素都是一个元组。 query函数已经将字节转换为选择的数据类型因此不需要再转换了。 需要注意的是这里必须明确元组的数据类型(如此处是 Vec(i32, String, i32, String, NaiveDate))。 否则编译器没办法做转换。 use chrono::prelude::*;// 用来处理日期use mysql::*;use mysql::prelude::*;fn main() {    let url  mysql://root:12345678localhost:3306/shuang;    let pool  Pool::new(url).unwrap(); // 获取连接池    let mut conn  pool.get_conn().unwrap();// 获取链接// 输出到Vec    let res: Vec(i32, String, i32, String, NaiveDate)         conn.query(select * from student).unwrap();    for r in res {        println!({}, {},{},{}, {:?}, r.0, r.1, r.2, r.3, r.4);    }} 映射结果到结构体 如果表的列数很多使用元组容易混淆更普遍的做法是定义一个结构体。 如下定义一个Student结构体, 然后可以用query_map将查询结果映射到Student中。 不需要指定数据类型编译器会根据Student类型自动推导 use chrono::prelude::*;// 用来处理日期use mysql::*;use mysql::prelude::*;fn main() {    let url  mysql://root:12345678localhost:3306/shuang;    let pool  Pool::new(url).unwrap(); // 获取连接池    let mut conn  pool.get_conn().unwrap();// 获取链接    // 将结果映射到提前定义好的结构体    struct Student {        id: u64,        name: String,        age: u16,        id_card: String,        last_changed_on: NaiveDate,    }    let res  conn.query_map(        select * from student,        |(id, name, age, id_card, update)| Student {            id: id,            name: name,            age: age,            id_card: id_card,            last_changed_on: update,        },    ).expect(Query failed.);    for i in res {        println!(            {}, {},{},{}, {:?},            i.id, i.name, i.age, i.id_card, i.last_changed_on        )    }} 单条数据查询 查询特定数据行可能会出现下面几种情况: 找到返回实际数据 没有找到行 发生错误 所以使用query_first函数返回的是Option的结果。 需要将其解包两次才可以获取实际的行数据: use chrono::prelude::*;// 用来处理日期use mysql::*;use mysql::prelude::*;fn main() {    let url  mysql://root:12345678localhost:3306/shuang;    let pool  Pool::new(url).unwrap(); // 获取连接池    let mut conn  pool.get_conn().unwrap();// 获取链接    struct Student {        id: u64,        name: String,        age: u16,        id_card: String,        last_changed_on: NaiveDate,    }    // 条件查询查询单个数据    let res  conn.query_first(select * from student where name  张三)        .map(            // Unpack Result            |row| {                row.map(|(id, name, age, id_card, update)| Student {                    id: id,                    name: name,                    age: age,                    id_card: id_card,                    last_changed_on: update,                })            },        );    match res.unwrap() {        Some(student)  println!(            {}, {},{},{}, {:?},            student.id, student.name, student.age, student.id_card, student.last_changed_on        ),        None  println!(Sorry no student found.),    }} 命名参数的使用 use chrono::prelude::*;// 用来处理日期use mysql::*;use mysql::prelude::*;fn main() {    let url  mysql://root:12345678localhost:3306/shuang;    let pool  Pool::new(url).unwrap(); // 获取连接池    let mut conn  pool.get_conn().unwrap();// 获取链接    struct Student {        id: u64,        name: String,        age: u16,        id_card: String,        last_changed_on: NaiveDate,    }    let res  conn        .exec_first(            select * from student where name  :name,            params! {                name  李四            },        )        .map(            // Unpack Result            |row| {                row.map(|(id, name, age, id_card, update)| Student {                    id: id,                    name: name,                    age: age,                    id_card: id_card,                    last_changed_on: update,                })            },        );    match res.unwrap() {        Some(student)  println!(            {}, {},{},{}, {:?},            student.id, student.name, student.age, student.id_card, student.last_changed_on        ),        None  println!(Sorry no student found.),    }} 写操作 本部分是对 Rust使用MySQL数据库02[3]的学习与记录 插入数据使用 conn.exec_drop() 使用预编译语句插入大量数据 conn.prep() 使用 conn.last_insert_id()可以获取主键 更新和删除也使用 conn.prep和 conn.exec_drop 插入新数据 use chrono::prelude::*;// 用来处理日期use mysql::*;use mysql::prelude::*;fn main() {    let url  mysql://root:12345678localhost:3306/shuang;    let pool  Pool::new(url).unwrap(); // 获取连接池    let mut conn  pool.get_conn().unwrap();// 获取链接    conn.exec_drop(        INSERT INTO student (name, age, id_card, last_update) VALUES (:name, :age, :id_card, :last_update),        params! {        name  王五,        age  28,        id_card  66666688,        last_update  today(),}).unwrap();}fn today() - NaiveDate {    let l  Local::today();    NaiveDate::from_ymd(l.year(), l.month(), l.day())} 和上面一节一样命名参数在这里使用了params宏的语法 exec_drop方法中的drop表示没有返回结果 用于执行插入/更新/删除的sql 使用预编译语句 使用conn.prep将sql编译成预编译语句。 use chrono::prelude::*;// 用来处理日期use mysql::*;use mysql::prelude::*;fn main() {    let url  mysql://root:12345678localhost:3306/shuang;    let pool  Pool::new(url).unwrap(); // 获取连接池    let mut conn  pool.get_conn().unwrap();// 获取链接    let stmt  conn.prep(INSERT INTO student (name, age, id_card, last_update) VALUES (:name, :age, :id_card, :last_update))        .unwrap();    for i in 1..10 {        conn.exec_drop(stmt, params! {         name  dashen,         age  18  i,         id_card  1234565X,         last_update  NaiveDate::from_ymd(2017, 05, 04),     }).unwrap()    }} 获取生成的主键id 可以通过conn.last_insert_id()方法获取到新记录的主键id该方法将返回的一个类型为u64 的值 use chrono::prelude::*;// 用来处理日期use mysql::*;use mysql::prelude::*;fn main() {    let url  mysql://root:12345678localhost:3306/shuang;    let pool  Pool::new(url).unwrap(); // 获取连接池    let mut conn  pool.get_conn().unwrap();// 获取链接    conn.exec_drop(INSERT INTO student (name, age, id_card, last_update) VALUES (:name, :age, :id_card, :last_update), params! {    name  fliter,    age  29,    id_card  88888888,    last_update  NaiveDate::from_ymd(2022, 05, 04),}).unwrap();    println!(新插入的记录的主键为: {}, conn.last_insert_id())} 新插入的记录的主键为: 13 更新和删除 类似于插入操作 use chrono::prelude::*;// 用来处理日期use mysql::*;use mysql::prelude::*;fn main() {    let url  mysql://root:12345678localhost:3306/shuang;    let pool  Pool::new(url).unwrap(); // 获取连接池    let mut conn  pool.get_conn().unwrap();// 获取链接    let stmt  conn.prep(update student set name:name, last_update:last_update where id:id)        .unwrap();    conn.exec_drop(stmt, params! {     name  新名字,     last_update  NaiveDate::from_ymd(2038, 12, 31),     id  10,}).unwrap();    let stmt  conn.prep(delete from student where id:id).unwrap();    conn.exec_drop(stmt, params! {    id  12,}).unwrap();} 参考资料 [1] 「Rust入门系列」Rust 中使用 MySQL: https://rustmagazine.github.io/rust_magazine_2021/chapter_3/rust-mysql.html [2] mysql: https://crates.io/crates/mysql [3] Rust使用MySQL数据库02: https://www.modb.pro/db/179746 本文由 mdnice 多平台发布
http://www.pierceye.com/news/513515/

相关文章:

  • 网站建设三方合同范本wordpress数字链接出现404
  • 下载用的网站怎么做网站模板怎么使用教程
  • 没有网站 可以做百度口碑吗展馆的科普网站建设
  • 河北网站备案查询系统商城网站seo
  • 网站申请页面网站空间不够用怎么办
  • 网站开发最合适的搭配螺栓球网架
  • 广东网站建设排名凡科建站下载
  • 建设厅网站预算员报名时间网站建设策划书的编制
  • 厦门手机网站建设公司哪家好鲜花网站源码
  • 北京家居网站建设如何制作软件手机软件
  • 北京网站建设策划解决方案长沙建设工程造价网站
  • 北京网站设计公司价格阿里云wordpress插件
  • 网站建设自助建站企业萧山人才网手机版
  • 长沙建站挺找有为太极wordpress 需要zend
  • 通信管理局 网站备案天猫网站设计教程
  • 营销型网站制作成都打造品牌的三点策略
  • 做查工资的网站如何下载网页在线视频
  • 北沙滩网站建设公司主页怎么填
  • 手机asp网站网站设计方案
  • 长春市网站开发广东一站式网站建设推荐
  • 企业网站推广策略商会联盟网站建设方案
  • 清丰网站建设百度推广建设网站是不是合发
  • 邢台12345网站哪个公司的装饰设计公司
  • 嘉兴网嘉兴网站建设手机网站管理软件
  • 网站主色调简介怎么说本地常州微信网站建设
  • 电子商务网站数据库建设怎样推广一个网站
  • illustrator 学习网站wordpress外链产品
  • 电脑端网站一般做多宽最好网页游戏制作成本
  • 怎样做好手机网站建设wordpress开启xml rpc
  • 泉州企业网站建设公司做外贸要建什么网站