项目运行mysql语言

前置

注意vs中要引用mysql的类库。

MySqlCommand

  • MySqlCommand类代表了要在MySQL数据库上执行的SQL语句或存储过程。提供了许多方法来执行不同类型的SQL命令,比如查询(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)。你可以创建一个MySqlCommand对象,并将要执行的SQL语句传递给它的构造函数,然后通过调用不同的方法来执行该命令。本文中通过它进行增删改查sql语句的创立


MySqlDataReader

  • MySqlDataReader类用于从MySQL数据库中读取查询结果。当你执行一个查询命令并且得到一个结果集时,你可以使用MySqlDataReader来逐行读取这个结果集中的数据。你可以调用Read()方法来移动到结果集中的下一行,并使用不同的方法(如GetInt32()、GetString()等)来获取每一列的值。MySqlDataReader提供了高效的数据读取功能,因为它一次只读取一行数据,而不是将整个结果集一次性加载到内存中。

 

Parameters.AddWithValue()

  • Parameters.AddWithValue() 是用于向 SQL 命令中添加参数的方法。
  • 在数据库操作中,有时候我们需要在 SQL 语句中使用参数,而不是直接将数值或字符串嵌入到 SQL 语句中。这样做的好处有两个方面:
  • 安全性:使用参数可以防止 SQL 注入攻击。如果直接将用户提供的数据嵌入到 SQL 语句中,恶意用户可能会利用这一点来执行恶意操作。而使用参数可以将用户输入的数据作为参数传递给 SQL 语句,数据库会将其视为数据而不是命令,从而避免了潜在的安全风险。
  • 清晰性:使用参数可以使 SQL 语句更加清晰和易读。参数的名称可以更好地表达数据的含义,使得代码更易于理解和维护。


reader.Read()

  • reader.Read() 是一个用于从数据库结果集中读取下一行数据的方法。
  • 在使用 MySqlDataReader 对象执行查询并获得结果集之后,通过调用 reader.Read() 方法可以逐行遍历结果集中的数据。每次调用该方法,它会尝试从结果集中读取下一行数据,并返回一个布尔值来指示是否成功读取了数据。
  • 如果成功读取了数据,reader.Read() 方法返回 true,这意味着结果集中还有更多的行可以读取。 如果结果集中没有更多的行可供读取(即已经读取到了结果集的末尾),那么 reader.Read() 方法会返回 false,表示已经到达了结果集的末尾,无法再读取更多的数据。
  • 因此,通常我们会在一个循环中使用 reader.Read() 方法来逐行读取结果集中的数据,直到 reader.Read() 返回 false,即结果集的末尾。在每次循环迭代中,我们可以使用其他方法(如 GetInt32()GetString() 等)从当前行中获取数据的值,并进行相应的处理

 

链接mysql数据库

它使用了MySQL Connector/NET库中的MySqlConnection类来建立与MySQL数据库的连接。

 static MySqlConnection conn= new MySqlConnection("server=localhost;User Id = root;passwrod=;Database=studymysql;Charset = utf8");conn.Open();
  • static MySqlConnection conn: 这声明了一个名为 conn 的静态变量,类型为 MySqlConnection,表示与MySQL数据库的连接。

  • new MySqlConnection("server=localhost;User Id=root;passwrod=;Database=studymysql;Charset=utf8"): 这是对 MySqlConnection 构造函数的调用,创建了一个新的 MySqlConnection 实例。它接受一个连接字符串作为参数。

    • server=localhost: 这指定了数据库服务器运行在本地机器上。
    • User Id=root: 这将用户名设置为 "root"。
    • passwrod=: 这里应该指定密码。但是,在这种情况下,密码似乎是空的,等号后面没有值。
    • Database=studymysql: 这指定要连接的数据库的名称,在这种情况下是 "studymysql"。
    • Charset=utf8: 这指定了连接使用的字符集


 

 创建 MySqlCommand 对象,传递 SQL 语句和参数来执行数据库操作。然后通过调用 ExecuteNonQuery() 方法来实际执行这些操作。


 

 

增(Add)

    static void Add() {MySqlCommand cmd = new MySqlCommand("insert into userinfo set name='xixi',age=96 ", conn);cmd.ExecuteNonQuery();int id = (int)cmd.LastInsertedId;Console.WriteLine("Sql Insert Key:{0}", id);}

  • MySqlCommand cmd = new MySqlCommand("insert into userinfo set name='xixi',age=96 ", conn);:这一行创建了一个新的 MySqlCommand 对象,用于执行 SQL 语句。SQL 语句是一个 INSERT INTO 语句,将数据插入到名为 userinfo 的表中。数据包括 nameage 字段,分别设置为 'xixi' 和 96。这个 MySqlCommand 对象被连接到之前创建的 conn 变量,即与 MySQL 数据库的连接。

  • cmd.ExecuteNonQuery();:这一行执行了 SQL 命令,将 'xixi' 和 96 插入到 userinfo 表中。因为这是一个插入操作,所以使用了 ExecuteNonQuery() 方法,它不返回任何数据,只是执行 SQL 命令。

  • int id = (int)cmd.LastInsertedId;:这一行获取刚插入的数据的自增 ID。MySQL 中的自增 ID 可以通过 LastInsertedId 属性获取。它被转换为整数类型,并存储在 id 变量中。

 


 

删(Delete)

    static void Delete() {MySqlCommand cmd = new MySqlCommand("delete from userinfo where id = 1", conn);cmd.ExecuteNonQuery();Console.WriteLine("delete done");}

 它创建了一个 MySqlCommand 对象 cmd,用于执行 SQL 删除语句。这个 SQL 语句是 delete from userinfo where id = 1,意味着要删除 userinfo 表中 ID 为 1 的记录。
接着,它调用了 ExecuteNonQuery() 方法来执行删除操作。因为这是一个删除操作,所以使用了 ExecuteNonQuery() 方法,它不返回任何数据,只是执行 SQL 命令。

  • 它创建了一个 MySqlCommand 对象 cmd,用于执行 SQL 删除语句。这个 SQL 语句是 delete from userinfo where id = 1,意味着要删除 userinfo 表中 ID 为 1 的记录。
  • 接着,它调用了 ExecuteNonQuery() 方法来执行删除操作。因为这是一个删除操作,所以使用了 ExecuteNonQuery() 方法,它不返回任何数据,只是执行 SQL 命令。

 


 

        MySqlCommand cmd = new MySqlCommand("update userinfo set name=@name,age=@age where id =@id", conn);cmd.Parameters.AddWithValue("name", "xoxo");cmd.Parameters.AddWithValue("age", 123);cmd.Parameters.AddWithValue("id", 2);cmd.ExecuteNonQuery();Console.WriteLine("update done");}
  • 创建了一个 MySqlCommand 对象 cmd,用于执行 SQL 更新语句。这个 SQL 语句是 update userinfo set name=@name,age=@age where id =@id,意味着要更新 userinfo 表中 ID 为给定值的记录,将姓名和年龄更新为给定的值。
  • 使用 Parameters.AddWithValue() 方法添加参数到 SQL 命令中。这样做的好处是可以避免 SQL 注入攻击,并且使得 SQL 语句更加清晰和易读。在这个例子中,它添加了三个参数:@name@age@id,分别表示要更新的姓名、年龄和记录的 ID。
  • 调用了 ExecuteNonQuery() 方法来执行更新操作。

 


 

查(Query)

    static void Query() {MySqlCommand cmd = new MySqlCommand("select * from userinfo where age=66", conn);MySqlDataReader reader = cmd.ExecuteReader();while (reader.Read()) {int id = reader.GetInt32("id");string name = reader.GetString("name");int age = reader.GetInt32("age");Console.WriteLine(string.Format("sql result: id:{0} name:{1} age:{2}", id, name, age));}}
  • 创建了一个 MySqlCommand 对象 cmd,用于执行 SQL 查询语句。查询的是 userinfo 表中所有年龄为 66 的记录。SQL 查询语句是 "select * from userinfo where age=66"这个 MySqlCommand 对象与之前创建的 conn 变量关联,表示它将在连接的数据库上执行查询操作。

  • MySqlDataReader 是用于读取查询结果集的对象。调用 ExecuteReader() 方法来执行查询,并将结果存储在一个 MySqlDataReader 对象 reader 中。

  • 在一个 while 循环中,它遍历查询结果集。每次调用 reader.Read() 方法,都会移动到结果集中的下一行数据。如果还有数据可读,则返回 true

  • 在循环内部,它使用 GetInt32()GetString() 方法从结果集中获取数据。根据列名(在这里是 "id"、"name" 和 "age"),它分别获取整数类型的 ID、字符串类型的姓名和整数类型的年龄。

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

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

相关文章

【刷题(13)】二分查找

一、二分查找基础 &#xff08;1&#xff09;int mid ((right - left) >> 1) left; &#xff08;2&#xff09;lower_bound的底层实现 int lower_bound(vector<int>& nums, int x) {int left 0;int right nums.size() - 1;// 区间为 左闭右闭while (lef…

基于python实现生命游戏

文章目录 一、生命游戏是什么二、生命游戏规则解释1.相邻细胞2.细胞状态 三、代码实现1.邻居细胞2.更新状态 四、整体代码 一、生命游戏是什么 生命游戏&#xff08;Game of Life&#xff09;是由英国数学家约翰何顿康威在1970年发明的一种细胞自动机&#xff08;Cellular Aut…

基于iptables 实现 ip 黑名单、白名单

1. 创建端口集合、黑名单ip集合、白名单ip 集合 2. 首次访问非正确的端口&#xff0c;即认为是黑名单ip 3. 若是黑名单ip 且不是白名单ip drop 4. 通过本次请求 标记为白名单ip ## 设置黑名单 ip ipset create scanner-ip-set hash:ip## 设置白名单 ipset create white-ip-s…

(超详细)字符函数和字符串函数【上】

前言 C 语言中对字符和字符串的处理很是频繁&#xff0c;但是 C 语言本身是没有字符串类型的&#xff0c;字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数 . 1.求字符串长度函数 strlen函数 我们要求一个字符串函数的长度…

Firefox国际版

Firefox国际版官方网址&#xff1a; Download the Firefox Browser in English (US) and more than 90 other languagesEveryone deserves access to the internet — your language should never be a barrier. That’s why — with the help of dedicated volunteers around…

C语言序列化和反序列化--TPL(一)

TPL TPL说明网站 C语言中高效的序列化 您可以使用tpl快速轻松地存储和重新加载C数据。Tpl是一个用于序列化C数据的库。数据以自然二进制形式存储。该API很小&#xff0c;并试图保持“不碍事”。Tpl可以序列化许多C数据类型&#xff0c;包括结构。Tpl与文件、内存缓冲区和文件…

使用cmd下载远程服务器的文件

直接上命令&#xff1a; scp root192.168.40.99:/home/nest/xc/…/img_return.png ./ 其中&#xff0c;root为username&#xff0c;后面为服务器地址&#xff0c;文件地址&#xff0c;./为下载到当前目录下

继承基础实战

文章目录 1.继承基础2.子类调用析构函数顺序3.继承中函数组合对象构造,析构函数调用4.重写父类同名的函数5.多重继承1.继承基础 2.子类调用析构函数顺序 3.继承中函数组合对象构造,析构函数调用 4.重写父类同名的函数 5.多重继承 #include <iostream> #include &l…

自学动态规划——爬楼梯(加强版)

爬楼梯&#xff08;加强版&#xff09; 57. 爬楼梯&#xff08;第八期模拟笔试&#xff09; (kamacoder.com) 虽然看起来和完全背包没有什么关系&#xff0c;实际上还是有背包的影子的。 首先&#xff0c;题目要求方法数量&#xff0c;那么就应该想到递推公式&#xff1a;dp…

【数据结构:排序算法】堆排序(图文详解)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f369;1.大堆和小堆 &#x1f369;2.向上调整算法建堆和向下调整算法建堆&#xff1a;…

Kafka原生API使用Java代码-生产者-分区策略-默认分区策略轮询分区策略

文章目录 1、代码演示1.1、pom.xml1.2、KafkaProducerPartitioningStrategy.java1.2.1、ProducerConfig.LINGER_MS_CONFIG取 0 值得情况&#xff0c;不轮询1.2.2、ProducerConfig.LINGER_MS_CONFIG取 0 值得情况&#xff0c;轮询1.2.3、ProducerConfig.LINGER_MS_CONFIG取 1000…

python使用modbustcp协议与PLC进行简单通信

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享&#xff0c;包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

LFCDR:Latent mutual feature extraction for cross-domain recommendation

Latent mutual feature extraction for cross-domain recommendation Knowledge and Information Systems-Hoon Park , Jason J. Jung-2024 思路 大部分研究都是主要集中在同构域,所以在没有共同用户的情况下,项目和元数据的异构对推荐任务造成了限制。 于是提出一个异构的…

B/S架构+java语言+Mysqladr数 据 库ADR药物不良反应监测系统源码 ADR药物不良反应监测系统有哪些作用?

B/S架构&#xff0b;java语言&#xff0b;Mysqladr数 据 库ADR药物不良反应监测系统源码 ADR药物不良反应监测系统有哪些作用&#xff1f; 药物不良反应(ADR)是指在合格药物以正常用量和用法用于预防、诊断、治疗疾病或调节生理功能时所发生的意外的、与防治目的无关的、不利或…

AI Agent智能体概述及原理

AI Agent概述 AI Agent旨在理解、分析和响应人类输入&#xff0c;像人类一样执行任务、做出决策并与环境互动。它们可以是遵循预定义规则的简单系统&#xff0c;也可以是根据经验学习和适应的复杂、自主的实体&#xff1b;可以是基于软件的实体&#xff0c;也可以是物理实体。…

大模型“1元购”?AI公司加速奔向应用端“大航海时代”

自字节跳动发布豆包大模型&#xff0c;互联网大厂纷纷就位&#xff0c;击穿“地板价”的打法从C端向B端拓展。这也成为今年“618”最亮眼的价格战。 5月15日&#xff0c;字节跳动率先宣布豆包大模型已通过火山引擎开放给企业客户&#xff0c;大模型定价降至0.0008元/千Tokens&…

ubuntu22.04部署docker版zlmediakit和源码运行wvp-GB28181-pro

1 运行zlmediakit 1. 修改zlmediakit配置文件 先用run命令运行zlmediakit&#xff0c;将zlmediakit的配置文件拷贝出来 docker run -d -p 1935:1935 -p 8080:80 -p 8554:554 \ -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp \ --name zlmediakit \ zlmediakit/zlmedi…

嵌入式0基础开始学习 ⅠC语言(6)函数

0.问题引入 有时候&#xff0c;经常需要在一个程序中&#xff0c;对一个数组进行输入输出 如&#xff1a; int a[3][4]; int i,j; for(i0;i<3;i) { for(j0;j<4;j) …

风萧萧兮易水寒,壮士一去兮不复还 的 rm 命令

风萧萧兮易水寒&#xff0c;壮士一去兮不复还 的 rm 命令 风萧萧兮易水寒&#xff0c;壮士一去兮不复还 的 rm语法几个示例/bin/rm Argument list too long – Linux”配合find与xargs完成删除海量文件使用find的delete选项 快速删除大文件 风萧萧兮易水寒&#xff0c;壮士一去…

设计模式20——职责链模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 职责链模式&#xff08;Chain …