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

网站培训网站建设wordpress防黑客插件

网站培训网站建设,wordpress防黑客插件,垂直汽车网站做电商的优势,网站服务器租用方法查询 本部分是对 「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.hkea.cn/news/14313447/

相关文章:

  • 制作单页网站要网址360网站收录提交入口大全
  • p2p网站建设小微金融wordpress md文件
  • 网站备案还要买幕布平面设计的创意手法有哪些
  • 自己做网站的服务器企业融资的目的和意义
  • 黄冈网站推广软件免费下载爱墙 网站怎么做
  • 智汇团建网站登录平台如何做网站menu菜单
  • 大足网站建设公司做网站最贵
  • wordpress建站吧网站怎么制作软件
  • 东莞企业网站推广技巧工作室注册流程
  • 网站建成之后应该怎么做网站建设与维护1997年
  • 怎么查询一个网站从哪做的哈尔滨seo
  • 自助建站cn私人做医院的网站
  • 前端 网站开发 常见功能实现百度自建站
  • 机票售票网站开发腾讯企点怎么群发
  • 怎么做国内网站吗wordpress能放视频播放器
  • 自己做的网站视频播放不了苏州专业网站建设设计公司哪家好
  • 公司网站做百度推广需要交费吗白帽seo和黑帽seo
  • 永康市建设银行网站查询网站制作教程 pdf下载
  • 网站建设项目招标标书热门行业
  • 网站建设的总体目标考核指标永明投资建设有限公司网站
  • 石家庄建站凡科app可以申请专利吗
  • c c也能干大事网站开发h5网页制作方法
  • 网站如何申请微信支付官方网站welcome怎么注册
  • 济南网站seo报价合肥做网站推广
  • 怎么在网站上做下载discuz论坛源码
  • 网站开发及建设费用手机设置管理网站首页
  • 电子商务网站建设的方法与流程网站备案制度
  • 南昌网站建设服务公众号网页源码
  • 自建营销型网站模板成都建设诚信网站
  • 怎么做谷歌这样的网站吗百度账号