C#连接MySQL

11 篇文章 1 订阅

一、环境搭配

         安装MySQL,引用MySql.Data.DLL文件,这个MySql.Data.DLL文件在你安装Mysql的时候已经下载好给你的了。

        把它复制到项目的Debug目录下,然后引用即可。

二、连接使用步骤

        声明对象,有连接对象,语句执行对象,结果读取对象,在这我们要先引用一下MysqlClient。

 

//连接对象
        MySqlConnection conn=null;
       
        //语句执行对象
        MySqlCommand comm=null;
        //语句执行结果数据对象
        MySqlDataReader dr = null;

        连接数据库

 conn = new MySqlConnection("Database = stu;Server = localhost;Port = 3306;Password = 123456;UserID = root;charset = utf8mb4");

        sql语句命令对象

comm = new MySqlCommand("select * from user",conn);

        执行语句获取数据

 dr = comm.ExecuteReader(); /*查询*/
 //dr = comm.ExecuteNonQuery();  /*增删改*/
            while (dr.Read())
            {               
                tbText.Text += dr.GetString("对应表字段名称") + "----" + dr.GetString("password");
                tbText.Text += "\r";
            }
            dr.Close();
            conn.Close();

        注意使用完,我们要关闭掉连接资源。如果连接失败,可能是版本不对,活动平台要修改成x86的平台。

三、功能代码实现

         首先创建一个数据库,随便写入几条数据。

CREATE TABLE `user` (
  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

insert into user values('jack','sss');
insert into user values('123','123');

        布局 有一个CheckedListBox控件,方便勾选删除。

        代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using MySql.Data;
namespace MysqlText
{
    public partial class frm_main : Form
    {
        //连接对象
        MySqlConnection conn=null;      
        //语句执行对象
        MySqlCommand comm=null;
        //语句执行结果数据对象
        MySqlDataReader dr = null;
        string strConn = "";
        public frm_main()
        {
            InitializeComponent();
            strConn = "Database = stu;Server = localhost;Port = 3306;Password = 123456;UserID = root;charset = utf8mb4";
            conn = new MySqlConnection(strConn);
        }

        /// <summary>
        /// 连接
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnConn_Click(object sender, EventArgs e)
        {            
            //判断连接状态
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
                tbText.Text = strConn;
                label4.Text = "";
                label4.Text = "连接成功";
            }
        }
        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSel_Click(object sender, EventArgs e)
        {
            //判断连接状态
            if (!CkeckConn())
            {
                MessageBox.Show("请连接数据库");
                return;
            }
            comm = new MySqlCommand("select * from user", conn);
            tbText.Text = "";
            dr = comm.ExecuteReader(); /*查询*/
            while (dr.Read())
            {
                tbText.Text += dr.GetString("username") + "----" + dr.GetString("password");
                tbText.Text += "\r\n";
            }
            dr.Close();
            ckLBoxsRefresh();
        }

        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            //判断连接状态
            if (!CkeckConn())
            {
                MessageBox.Show("请连接数据库");
                return;
            }
            label4.Text = "";
            //先判断用户是否已注册
            if (tbUser.Text =="" || tbPW.Text=="")
            {
                label4.Text = "请完善信息";
                return;
            }
            comm = new MySqlCommand("select * from user where username = '" + tbUser.Text + "'", conn);
            dr = comm.ExecuteReader();
            if (dr.Read())
            {
                label4.Text = "已存在用户" + tbUser.Text;
            }
            else
            {
                dr.Close();
                int num = 0;
                comm = new MySqlCommand("insert into user values('" + tbUser.Text + "','" + tbPW.Text + "')", conn);               
                num = comm.ExecuteNonQuery();
                if (num > 0)
                {
                    label4.Text = "已添加用户" + tbUser.Text;
                    ckLBoxsRefresh();
                    tbText.Text = "";

                }
                else
                {
                    label4.Text = "添加失败";
                }
            }
            dr.Close();
        }
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUp_Click(object sender, EventArgs e)
        {
            //判断连接状态
            if (!CkeckConn())
            {
                MessageBox.Show("请连接数据库");
                return;
            }
            label4.Text = "";
            //先判断用户是否已注册
            comm = new MySqlCommand("select * from user where username = '" + tbUpUser.Text + "'", conn);
            dr = comm.ExecuteReader();
            if (dr.Read())
            {
                dr.Close();
                int num = 0;
                comm = new MySqlCommand("update user set  password = '" + tbUpPW.Text + "'where username = '" + tbUpUser.Text + "'", conn);
                num = comm.ExecuteNonQuery();
                if (num > 0)
                {
                    label4.Text = "已修改用户" + tbUpUser.Text + "密码";
                    tbText.Text = "";
                }
                else
                {
                    label4.Text = "修改失败";
                }
            }
            else
            {
                label4.Text = "用户不存在";
            }
            dr.Close();
        }

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDel_Click(object sender, EventArgs e)
        {
            //判断连接状态
            if (!CkeckConn())
            {
                MessageBox.Show("请连接数据库");
                return;
            }
            label4.Text = "";
            //查找选中
            for (int i = 0; i < ckLBoxs.Items.Count; i++)
            {
                if (ckLBoxs.GetItemChecked(i))
                {                   
                    int num = 0;
                    comm = new MySqlCommand("delete from user where username = '" + ckLBoxs.Items[i].ToString() + "'", conn);

                    num = comm.ExecuteNonQuery();
                    if (num > 0)
                    {
                        label4.Text += "已删除用户" + ckLBoxs.Items[i].ToString()+"\t";
                        ckLBoxsRefresh();
                        tbText.Text = "";
                    }
                    else
                    {
                        label4.Text = "用户不存在";
                    }
                }
            }
        }
        /// <summary>
        /// 判断连接
        /// </summary>
        /// <returns></returns>
        private bool CkeckConn()
        {
            if (conn.State ==ConnectionState.Open)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        /// <summary>
        /// 列表更新
        /// </summary>
        private void ckLBoxsRefresh()
        {
            //判断连接状态
            if (!CkeckConn())
            {
                MessageBox.Show("请连接数据库");
                return;
            }
            comm = new MySqlCommand("select * from user", conn);
            dr = comm.ExecuteReader();
            ckLBoxs.Items.Clear();
            int num = 0;
            while (dr.Read())
            {
                ckLBoxs.Items.Add(dr.GetString(0));
                num++;
            }
            label4.Text = "";
            label4.Text = "已更新数据" + num.ToString() + "条。";
            dr.Close();
        }
        /// <summary>
        /// 退出
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Exit_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        /// <summary>
        /// 关闭
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frm_main_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (conn !=null )
            {
                if (conn.State != ConnectionState.Closed)
                {
                    conn.Close();
                }
            }
            if (dr !=null)
            {
                dr.Close();
            }
        }
    }
}

 四、效果

        连接

        查询

        添加

        修改

        删除

C#连接mysql以及CRUD的实现就这样,如有什么问题或者交流可以留言或私信me。

 

 

 

 

 

 

  • 10
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 要在VS2019中使用C#连接MySQL数据库,需要遵循以下步骤: 1. 下载MySQL Connector/NET,这是一个.NET Framework的MySQL数据提供程序,可以从MySQL官方网站上下载。 2. 在Visual Studio中创建一个新的C#项目。 3. 在项目中添加对MySQL Connector/NET的引用。 4. 在代码中使用MySQL Connector/NET提供的类来连接MySQL数据库,例如MySqlConnection和MySqlCommand。 5. 在连接字符串中指定MySQL服务器的地址、端口、用户名和密码等信息。 6. 执行SQL查询或命令,例如使用MySqlCommand对象的ExecuteNonQuery()方法执行INSERT、UPDATE或DELETE语句,或使用MySqlCommand对象的ExecuteReader()方法执行SELECT语句。 7. 处理查询结果,例如使用MySqlDataReader对象读取查询结果。 以上就是连接MySQL数据库的基本步骤。需要注意的是,连接MySQL数据库需要确保MySQL服务器已经启动,并且已经创建了要连接数据库和表。 ### 回答2: VS2019是微软最新的开发者工具,为开发者提供了全面的开发体验,加强了开发者之间的协作和开发过程的可维护性。在VS2019中,可以使用多个工具集和多重挂载,以及许多新功能和工具。VS2019中也增加了对最新技术的支持,例如.NET Core 3.0和Azure DevOps。 VS2019支持.NET Core的开发,可以让开发者使用全面的.NET Core 3.0和C# 8.0的特性,包括异步可枚举(IAsyncEnumerable)和异步Disposable(IAsyncDisposable)。在使用.NET Core开发时,还能够获得更好的性能和可扩展性。 VS2019还推出了一些新的功能,包括用于测试的IntelliCode自动机器学习,这可以节省时间和资源,从而使测试工作更加高效。此外,还有多重分类视图,以便开发者在多个整体视图中更好地组织和管理项目。 VS2019的调试功能也得到了很大的改进,这些功能包括堆栈解析和大多数异常捕获。对于ASP.NET开发,VS2019还提供了新的调试工具,以便更好地判断问题的原因。 总结来说,VS2019为开发者提供了更好、更全面的开发体验,从而使开发过程更加高效和可维护。因此,VS2019被认为是一个非常好的工具,可以提高开发效率和质量。 ### 回答3: VS2019C 是什么? VS2019C 是指微软公司于2019年发布的Visual Studio 2019 的专业版(Professional)和企业版(Enterprise)版本,其中“C”代表着针对C语言和C ++编程的特殊支持。 VS2019C 主要功能? VS2019C 是针对专业开发者设计的一款集成开发环境(IDE)工具。它具有各种各样且强大的功能,包括: 1. 可支持 C++, C# 和 Visual Basic,及其它编程语言的代码编辑器。VS2019C的代码编辑器从设计上优化,通过简化和提高用户的代码编写效率。 2. 内置了可自动完成、智能提示和高亮的编辑器。这意思是说,用户可以简化和加快他们的编程工作,提高了编写代码的速度和准确性。 3. 支持代码的集成开发环境, 包括代码调试、测试、版本控制和部署,还内置了强大的分析工具以帮助用户识别和解决问题。 4. VS2019C 支持多种应用程序类型的开发,包括桌面应用程序、Web 应用程序、移动应用程序、游戏等。支持各种语言和平台,如 .Net Core,Java,C++,Python 和 PHP等。 5. Visual Studio 2019 C++是最好的C++开发工具之一,尤其与 Windows 平台的开发一脉相承。具有嵌入式开发特性,例如调试、内存管理、变量输出、符号表等特性。 总之,VS2019C 为开发者提供了更为方便的开发和维护多种多样应用程序的环境,减少了测试、问题解决和部署的时间和成本,使得开发工作变得更为高效和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自动化民工

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值