MySQL基础知识学习——ADO.NET实现数据库连接、Sql语句执行(增删改查)(七)

HeidiSQL 创建数据库、表、所需字段

create database studb;
use studb;
create table tb_stu
(
stuId int auto_increment primary key comment '主键',
stuName varchar(20) unique not null comment '学生姓名',
stuGender char(1) not null comment '性别',
stuAge int check(stuAge>16 and stuAge<120) not null,
stuBirthday date not null
);

点击执行进行创建
在这里插入图片描述
执行结果
在这里插入图片描述

ADO.NET介绍

ADO.NET,是一个COM组件库,用于在 Microsoft技术中访问数据。 创建控制台程序,在NuGet引用MySql.Data

在这里插入图片描述
双击项目,添加引用

<ItemGroup>
		<PackageReference Include="MySql.Data" Version="8.0.32" />
	</ItemGroup>

在这里插入图片描述

数据库连接与访问

数据库连接

  public static void ConnectionDataBase()
        {
    
    
            string connectionstr = "Server=localhost;port=3306;Database=studb;Uid=root;Pwd=Yiqing7717";
            //创建连接MySQL客户端对象
            MySqlConnection mySqlConnection = new MySqlConnection(connectionstr);
            //打开连接
            mySqlConnection.Open();
            if (mySqlConnection != null && mySqlConnection.State == ConnectionState.Open)
            {
    
    
                Console.WriteLine("MySQL连接成功");
            }
        }

在这里插入图片描述

数据插入

       /// <summary>
        /// 储存数据
        /// </summary>
        public static void ExecuteInsert()
        {
    
    
            try
            {
    
    
                //获取连接对象
                var connection = ConnectionDataBase();
                //通过连接对象创建命令对象
                MySqlCommand mySqlCommand = connection!.CreateCommand();
                //设置命令对象执行的命令文本--sql语句
                string insertstr = "insert into tb_stu (stuName,stuGender,stuAge,stuBirthday) values ('王五','男',23,'1920-11-22') ";
                mySqlCommand.CommandText = insertstr;
                //执行sql命令
                int row = mySqlCommand.ExecuteNonQuery();
                if (row > 0)
                {
    
    
                    Console.WriteLine("添加成功");
                }
                else
                {
    
    
                    Console.WriteLine("添加失败");
                }
            }
            catch (Exception er)
            {
    
    

                Console.WriteLine(er.Message.ToString());
            }
           
        }

在这里插入图片描述

方法1

       ///数据库访问语句
       private static readonly string ConnectString = "Server=localhost;port=3306;Database=studb;Uid=root;Pwd=123456";
       ///测试
        public static void TestADOCRUD()
        {
    
    
            // 测试数据库连接是否正常
            ConnectDatabase();
            // 测试数据查询操作
            string insertSql = "insert into tb_stu (stuName,stuGender,stuAge,stuBirthday) values ('李四','男',23,'1920-11-22')";
            ExecuteUpdate(insertSql);
            // 测试数据修改操作
            string updateSql = "update tb_stu set stuGender='女',stuAge=33 where stuId=1";
            ExecuteUpdate(updateSql);
            // 测试数据删除操作
            string deleteSql = "delete from tb_stu where stuId=1";
            ExecuteUpdate(deleteSql);  
        }
        /// <summary>
        /// 1、连接MySQL数据库
        /// </summary>
        public static MySqlConnection? ConnectDatabase()
        {
    
    
             
            // 创建连接MySql客户端对象
            MySqlConnection connection = new MySqlConnection(ConnectString);
            // 打开连接
            connection.Open();
            // 判断连接对象的状态
            if (connection != null && connection.State == ConnectionState.Open)
            {
    
    
                Console.WriteLine("连接上MySql数据库");
            }
            else
            {
    
    
                Console.WriteLine("连接MySql失败");
            }
            return connection;
        }
        ///执行sql语句
         public static void ExecuteUpdate(string? sql)
        {
    
    
            // 2.1 获取连接对象
            var connection = ConnectDatabase();
            try
            {
    
    

                // 2.2 通过连接对象创建命令对象
                MySqlCommand cmd = connection!.CreateCommand();
                // 2.3 设置命令对象执行的命令文本【sql语句】

                cmd.CommandText = sql;
                // 2.4 执行SQL命令
                int row = cmd.ExecuteNonQuery();
                // 2.5 处理返回结果
                if (row > 0)
                {
    
    
                    Console.WriteLine("操作成功");
                }
                else
                {
    
    
                    Console.WriteLine("操作失败");
                }
            }
            finally
            {
    
    
                // 关闭连接
                CloseConnection(connection!);
            }

        }
        /// <summary>
        /// 关闭连接对象的方法
        /// </summary>
        public static void CloseConnection(MySqlConnection connection)
        {
    
    
            if (connection != null && connection.State == ConnectionState.Open)
            {
    
    
                // 关闭连接对象
                connection.Close();
                // 把连接对象置空
                connection = null!;
            }
        }

方法2

         public static void TestADOCRUD()
        {
    
                
            MySqlParameter[] sqlParameter = new MySqlParameter[] 
            {
    
    
                new MySqlParameter("@stuId",3),
                new MySqlParameter("@stuName","王五"),
            };

            ExecuteQuery("select * from tb_stu where stuId=@stuId and stuName=@stuName", sqlParameter);
        }
        /// <summary>
        /// 3、执行Sql查询操作
        /// </summary>
        public static void ExecuteQuery(string sql,params MySqlParameter[] parameters)
        {
    
    
            // 3.1 获取连接对象
            var connection = ConnectDatabase();
            try
            {
    
    
                //3.2 创建命令对象
                MySqlCommand command = new MySqlCommand(sql, connection);
                // 设置参数
                foreach (var parameter in parameters)
                {
    
    
                    command.Parameters.Add(parameter);
                }
                //3.3 通过命令对象执行Sql语句返回数据读取器
                MySqlDataReader dataReader = command.ExecuteReader();
                Console.WriteLine("编号\t姓名\t年龄\t性别\t生日");
                // 3.4 获取读取器中的数据
                while (dataReader.Read())
                {
    
    
                    // 获取行中每一个列中的数据
                    // 可以通过列的索引或者列的名称
                    Console.WriteLine($"{
      
      dataReader.GetInt32(0)}\t" +
                        $"{
      
      dataReader.GetString("stuName")}" +
                        $"\t{
      
      dataReader.GetInt32("stuAge")}\t" +
                        $"{
      
      dataReader.GetString("stuGender")}\t" +
                        $"{
      
      dataReader.GetDateTime("stuBirthday")}");
                }
                // 关闭阅读器对象
                dataReader.Close();
            }
            finally
            {
    
    
                // 关闭连接
                CloseConnection(connection!);
            }
        }

猜你喜欢

转载自blog.csdn.net/weixin_45496521/article/details/129025427