首页 > 数据库 >vs上运行mysql

vs上运行mysql

时间:2024-05-29 21:00:05浏览次数:26  
标签:语句 MySqlCommand mysql age cmd vs SQL id 运行

前置

注意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 = 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、字符串类型的姓名和整数类型的年龄。

标签:语句,MySqlCommand,mysql,age,cmd,vs,SQL,id,运行
From: https://blog.csdn.net/weixin_44001501/article/details/139304842

相关文章

  • VSCode配置C++环境
    目录一.环境准备二.编写代码三.直接利用gcc以及gdb编译调试四.配置tasks.json和launch.json五.其他这篇文章讨论一下VSCode配置C++的方法,重点要讨论的是tasks.json和launch.json这两个配置文件,所以很多基础内容会直接略过。一.环境准备1.安装MinGW-w64。为啥要装Min......
  • 升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0 uniapp、vue、android、web 框
    升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0uniapp、vue、android、web框架:Vue3+SpringBoot3),界面功能(三) 主要功能要点:     权限管理(组织机构、用户管理、角色管理、岗位管理)     系统设置(菜单管理、参数管理、数据字典、定时任务、文件管......
  • MySQL中的并发控制
    效率工具推荐一个程序员的常用工具网站,效率加倍嘎嘎好用:程序员常用工具云服务器云服务器限时免费领:轻量服务器2核4G腾讯云:2核2G4M云服务器新老同享99元/年,续费同价阿里云:2核2G3M的ECS服务器只需99元/年,续费同价在现代应用程序中,数据库并发访问是一个常见的场景。多个......
  • MySQL中SQL表设计的注意事项
    效率工具推荐一个程序员的常用工具网站,效率加倍嘎嘎好用:程序员常用工具云服务器云服务器限时免费领:轻量服务器2核4G腾讯云:2核2G4M云服务器新老同享99元/年,续费同价阿里云:2核2G3M的ECS服务器只需99元/年,续费同价设计良好的数据库表结构是构建高效、可维护的应用程序的......
  • oracle的排序函数以及mysql使用变量实现排序
    oracle的排序函数rank()函数:跳跃排序,如果两个第一,则后边是第3dense_rank()函数:连续排序,,再如两个第一,则后边是第2row_number()函数:连续排序,没有并列的情况createtableccx_test( coursevarchar(10), scoreint);insertintoccx_testvalues(1,70);insertintoccx_......
  • mysql 函数实现父子查询
    DELIMITER//CREATEFUNCTIONget_all_father(rootIdINT)RETURNSvarchar(1000)DETERMINISTICBEGINDECLAREsTempVARCHAR(1000);DECLAREsTempParVARCHAR(1000);SETsTemp='';SETsTempPar=rootId;#循环递归WHILEsTemp......
  • mysql实现oracle的start with递归查询
    oracle查询语句selectdept_codefrom表名startwithdept_code='41311046430000001'connectbyPRIORid=PARENT_ID结果如下:改为mysql查询,实用函数实现selectsd.*from (select*from表名)sd, (select@pid:=(selectidfrom表名wheredept_code='4131......
  • Java语言,MySQL数据库;SSM 心理咨询预约管理系统19086(免费领源码)计算机毕业设计项目推荐
    目 录摘要1绪论1.1背景及意义1.2研究现状1.3ssm框架介绍1.4论文结构与章节安排2 心理咨询预约管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能......
  • MySQL安装教程(详细)
    文章目录一、安装准备1.1mysql数据库下载1.2数据库运行环境下载二、安装步骤2.1开始安装2.2选择安装类型2.3选择功能2.4检测安装环境2.5功能安装2.6功能安装完成,点击next2.7产品配置,点击next2.8网络通信配置2.9帐户设置(很重要)2.10数据库实例名设置,默认next......
  • 【Qt秘籍】[005]-Qt第一次实战-运行
    一、如何创建文件?        当我们打开QtCreator,你会发现整个界面类目繁多。现在,让我们直接开始新建一个项目。1.点击左上角的“文件”==>点击“新建文件或项目”2.如图,选择“Application”==>“QtWifgetsapplication”==>“Choose...” 3.如图,选择填写名称和......