利用VS2017 编写C#程序实现与MySQL链接(详细教程)

利用VS2017 编写C#程序实现与MySQL链接(详细教程)

利用VS2017 编写C#程序实现与MySQL链接(详细教程)

首先,我是一个C#小白,为了完成毕设 不得不去学C#,与数据库链接是为了处理数据。但在网上找了很多资料,费了不少时间,都没有一个详细的教程,在我弄好之后,我决定把这些分享给大家。

代码

话不多说,先来代码

</>
using System;
using System.Data;
using MySql.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Text.RegularExpressions;

namespace 空项目2
{
public class MySQL_con
{
public static void Main()
{

        MySqlConnection mysql = getconn();
        String sqlSearch = "", sqlInsert = "", sqlUpdate = "", sqlDelete = "";
        while (true)
        {
        //获取命令
        SEL:
            Menu();
            int x;
            try
            {
                x = Convert.ToInt32(Console.ReadLine());
            }
            catch
            {
                goto SEL;
            }
            if(x<0&&x>5)
                goto SEL;
            if(x== 0)
                 Environment.Exit(0);
            Console.Write("\n请输入MySQL命令" + ":");
            String n = Convert.ToString(Console.ReadLine());
            switch (x)
            {
                case 1: sqlSearch = n; break;
                case 2: sqlInsert = n; break;
                case 3: sqlUpdate = n; break;
                case 4: sqlDelete = n; break;
                case 0: Environment.Exit(0);  break;
                default:goto SEL;

            }

            //string sqlTruncate = "truncate students";
            //Console.Write("3"+sqlSearch);

            try
                {
                    MySqlCommand mysqlselect = getsqlCommand(sqlSearch, mysql);
                    MySqlCommand mysqlinsert = getsqlCommand(sqlInsert, mysql);
                    MySqlCommand mysqlupdate = getsqlCommand(sqlUpdate, mysql);
                    MySqlCommand mysqldelete = getsqlCommand(sqlDelete, mysql);
                    //MySqlCommand mysqlTruncate = getsqlCommand(sqlTruncate, mysql);

                    mysql.Open();

                    //输出数据库版本和信息
                    //Console.WriteLine(mysql.ServerVersion + "n" + mysql.ConnectionString + "n" + mysql.Database + "n" + mysql.DataSource + "n");

                    //getTruncate(mysqlTruncate); //清空表
                    //InsertTestData(mysql);   //插入测试数据

                    getResult(mysqlselect);
                    Console.WriteLine();

                    //getDelete(mysqldelete);
                    //getInsert(mysqlinsert);
                    //getUpdate(mysqlupdate);
                    //     getDelete(mysqldelete);

                    mysql.Close();
                }
                catch (MySqlException ex)
                {
                    Console.Write(ex.Message);
                } 

        }

        Console.ReadLine();
    }

    //链接数据库
    public static MySqlConnection getconn()
    {
        //string mysqlStr = "Database=student;Data Source = 192.168.1.0;User Id=root;password=123456;charset=gbk;port=3306";
        string connString = "server=localhost;database=qqq;uid=root;pwd=123456";
        //MySqlConnection conn = new MySqlConnection(connString);
        MySqlConnection mysql = new MySqlConnection(connString);
        return mysql;

    }

    public static void Menu()
    {
        Console.Write("*************************************\n");
        Console.Write("**************1、select**************\n");           
        Console.Write("**************2、insert**************\n");
        Console.Write("**************3、delete**************\n");
        Console.Write("**************4、update**************\n");
        Console.Write("*************************************\n");
        Console.Write("***************请选择:***************\n");

    }

    //获取并判断命令
    

    //获得一个MySQL命令
    public static MySqlCommand getsqlCommand(string sql, MySqlConnection mysql)
    {
        MySqlCommand mysqlcommand = new MySqlCommand(sql, mysql);
        return mysqlcommand;
    }


    //获取数据库全部数据
    public static void getResult(MySqlCommand mysqlcommand)
    {
        Console.WriteLine(mysqlcommand);
        MySqlDataReader reader = mysqlcommand.ExecuteReader();
        try
        {
            while (reader.Read())
            {
                if (reader.HasRows)
                {
                    Console.WriteLine(" 姓名:" + reader.GetString(1) + "  编号:" + reader.GetString(0) + "  地址:" + reader.GetString(2) + " 电话:" + reader.GetInt32(reader.GetOrdinal("phone")) + " 年龄:" + reader.GetInt32(reader.GetOrdinal("age")));
                }
            }
        }
        catch (MySqlException ex)
        {
            Console.WriteLine("查询失败!" + ex.Message);
        }
        finally
        {
            reader.Close();
        }
    }
    //更新
    public static void getUpdate(MySqlCommand mysqlcommand)
    {
        try
        {
            mysqlcommand.ExecuteNonQuery();
        }
        catch (MySqlException ex)
        {
            string message = ex.Message;
            Console.WriteLine("修改数据失败! " + message);
        }
    }
    //删除
    public static void getDelete(MySqlCommand mysqlcommand)
    {
        try
        {
            mysqlcommand.ExecuteNonQuery();
        }
        catch (MySqlException ex)
        {
            string message = ex.Message;
            Console.WriteLine("删除数据失败! " + message);
        }
    }
    //插入
    public static void getInsert(MySqlCommand mysqlcommand)
    {
        try
        {
            mysqlcommand.ExecuteNonQuery();
        }
        catch (MySqlException ex)
        {
            string message = ex.Message;
            Console.WriteLine("插入数据失败! " + message);
        }
    }


    //清空表
    public static void getTruncate(MySqlCommand mysqlcommand)
    {
        try
        {
            mysqlcommand.ExecuteNonQuery();
        }
        catch (MySqlException ex)
        {
            string message = ex.Message;
            Console.WriteLine("清空表失败! " + message);
        }
    }

    //插入测试数据
    public static void InsertTestData(MySqlConnection mysql)
    {
        int i = 0;
        while (i++ != 10)
        {
            string cmd12 = "insert into students(stu_id,stu_name,address,phone,age) values('099','李白','南极',12344615,20)";
            MySqlCommand mycmd = new MySqlCommand(cmd12, mysql);
            if (mycmd.ExecuteNonQuery() > 0)
            {
                Console.WriteLine("数据插入成功!{0}", i);
            }

        }

    }

}

}

</>

具体的步骤

1.当然,要创建C#程序当然要打开vs2017(当然,这是废话)

  1. 点击右上角的文件,新建,项目,选择Windows桌面下的空项目,然后在下面起好名称,点击确定。(就是下面这个雅子)在这里插入图片描述
    3.确定了之后,首先点击空项目,右键新建项,点击添加,选择新建项,选择类,点击添加。
    在这里插入图片描述
    4.然后系统会自动打开新建的程序,也就是你创建的类。但在编写代码之前还有一部工作要做,那就是把MySQL与C#链接的协议拿过来,也就是MySql.Data.dall。应用方法为,右击引用,点击添加引用,然后点击浏览,找到你下载的那个协议。默认路径为C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.19\Assemblies\v4.5.2。 然后点击添加,你会发现引用管理器-项目名这个框框里的协议前面打了一个对勾。如果你之前引用过这个协议的话,直接在协议前面点对勾就好了,点击下面的确定就好了。
    在这里插入图片描述
    在这里插入图片描述

下一步工作

好了,这下可以编写代码了。把我前面的代码复制,粘贴上去就好了。
但在这里有几点需要说明一下

  1. 记得应用协议
  2. 文件的名字和public class 后面的名字要一致,namespace后面的名字是项目名字(不要随便改)。
  3. 在第95行,我的数据控名为qqq,密码为123456,你记得改 ,要不然连接不上.
  4. 数据库的增删改查内容要修改
  5. 对于reader.GetString(1),数字表示第几个输出位置,你试试就懂了
  6. reader.GetInt32(reader.GetOrdinal(“phone”)),对于这句代码我本来用的是reader.GetInt32(11),因为我设置的电话号码长度为11位,但是报错,在我查询之后改用了这个方法,直接获取phone处的值,管他多少位。
  7. 暂时就是这个样子,大家要加油哦。不会的可以留言,我会留意的(如果我会的话,hhh)。

参考文献

https://blog.csdn.net/Sayesan/article/details/86702046

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

铜雷格局

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值