C#连接MySQL

一、环境搭配

         安装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。

 

 

 

 

 

 

C#连接MySQL可按以下步骤实现: 1. **下载连接文件**:需下载MySql官方的连接.net的文件,下载地址为http://dev.mysql.com/downloads/connector/net/6.6.html#downloads ,下载平台选择.Net&Mono,下载ZIP免安装版[^1]。 2. **添加引用**:解压缩下载的mysql - connector - net - 6.6.6 - noinstall.zip文件,里面有几个版本选择,可选择V4,选中相关文件后添加到C#项目的引用中,之后便可编写程序进行数据库操作[^1]。 3. **编写数据库操作代码**:以下为示例代码,实现向数据库插入数据的功能。 ```csharp using System; using System.Collections; using System.Configuration; using MySql.Data; using MySql.Data.MySqlClient; using System.Data; namespace Sql //数据库简单测试 { class InsertSql1 { public static void Main(string[] args) { string constr = "server=localhost;User Id=root;password=219229;Database=reg"; MySqlConnection mycon = new MySqlConnection(constr); mycon.Open(); MySqlCommand mycmd = new MySqlCommand("insert into buyer(name,password,email) values('小王','dikd3939','1134384387@qq.com')", mycon); if (mycmd.ExecuteNonQuery() > 0) { Console.WriteLine("数据插入成功!"); } Console.ReadLine(); mycon.Close(); } } } ``` 另外,也可使用如下方式创建连接对象: ```csharp MySqlConnection conn = new MySqlConnection("Database = stu;Server = localhost;Port = 3306;Password = 123456;UserID = root;charset = utf8mb4"); ``` 还存在另一种连接方式的示例代码: ```csharp using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Odbc; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using MySQLDriverCS; namespace mysql { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { MySQLConnection conn = null; conn = new MySQLConnection(new MySQLConnectionString("localhost", "inv", "root", "831025").AsString); conn.Open(); MySQLCommand commn = new MySQLCommand("set names gb2312", conn); commn.ExecuteNonQuery(); string sql = "select * from exchange"; MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn); DataSet ds = new DataSet(); mda.Fill(ds, "table1"); this.dataGrid1.DataSource = ds.Tables["table1"]; conn.Close(); } } } ``` ExecuteReader使用实例代码如下: ```csharp string sql = "select ClassName,GradeId,Remark from ClassInfo where ClassId = @ClassId"; MySqlParameter paraId = new MySqlParameter("@ClassId", classId); MySqlDataReader dr = MySqlHelper.ExecuteReader(sql, paraId); //Read()数据流前进到下一条记录,读一条,丢一条,相当于判断游标之后有没有数据 if (dr.Read()) { txtClassName.Text = dr["ClassName"].ToString(); oldClassNmae = txtClassName.Text; txtRemark.Text = dr["Remark"].ToString(); int gradeId = (int)dr["GradeId"]; oldGradeId = gradeId; cboGrade.SelectedValue = gradeId; } //关闭数据流之后,conn自动关闭 dr.Close(); ```
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值