首先要在项目中添加NuGet包

在当前项目的项目菜单中选择管理NuGet程序包

c mysql操作数据库代码 c# mysql数据库_c#


在浏览界面中搜索Mysql.data并安装第一个

c mysql操作数据库代码 c# mysql数据库_数据库_02


在之后的每一次需要使用连接MySql数据库时就在开头加一个

using Mysql.Data.MysqlClient;

c mysql操作数据库代码 c# mysql数据库_c#_03


这便完成了C#连接MySql的环境配置

接下来是使用的过程:

1.创建一个String字段,储存连接数据库的相关信息
server=localhost;port=3306;user=连接数据库用户名;password=密码database=数据库名字
2.创建MySqlConnection 对象
3.用该对象调用open()函数,连接数据库
4.调用close()来关闭数据库连接

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace MySqlCmd
{
    class Program
    {
        static void Main(string[] args)
        {
            string connetStr = "server=localhost;port=3306;user=root;password=123456;database=classicmodels;";
            MySqlConnection conn = new MySqlConnection(connetStr);
            try
            {
                conn.Open();
                Console.WriteLine("-建立连接");

            }
            catch(MySqlException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                conn.Close();
            }
            
        }
    }
}

注意:在连接数据库时最好使用 try catch 语句,来保证连接可靠性

运行结果:

c mysql操作数据库代码 c# mysql数据库_c mysql操作数据库代码_04


ExecuteReader——用于查询数据库。查询结果是返回MySqlDataReader对象,MySqlDataReader包含sql语句执行的结果,并提供一个方法从结果中阅读一行。

ExecuteNonQuery——用于插入、更新和删除数据。

ExecuteScalar——用于查询数据时,返回查询结果集中第一行第一列的值,即只返回一个值。

一、对数据库的内容进行读取
1.建立一个string对象来存放MySql语句,如:select * from customer
2.用SQL语句为形参来创建一个MySqlCommand对象
3.使用ExcuteReader()函数来执行该SQl语句,并返回一个MySqlDataReader对象
4.通过调用MySqlDataReader对象的Read()来返回一个布尔值,用于判断数据库中是否还有数据可读取
5.通过循环MySqlDataReader对象的GetInt32(int i),GetString(int i)等等获得相应类型数据的函数来得到数据
注意:int i 参数为对应表格中列数,从0开始

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace MySqlCmd
{
    class Program
    {
        static void Main(string[] args)
        {
            string connetStr = "server=localhost;port=3306;user=root;password=123456;database=classicmodels;";
            MySqlConnection conn = new MySqlConnection(connetStr);
            try
            {
                conn.Open();
                string sqlCmd = "select * from customers";
                MySqlCommand cmd = new MySqlCommand(sqlCmd, conn);
                MySqlDataReader reader = cmd.ExecuteReader();
                Console.WriteLine("customerNumber\tcustomerName\n");
                while (reader.Read())
                {
                    Console.WriteLine("{0}\t{1}", reader.GetInt32(0), reader.GetString(1));
                }
            }
            catch(MySqlException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                conn.Close();
            }
            
        }
    }
}

为了使输出的结果易于阅读,可使用’\t’制表符号。

运行结果

c mysql操作数据库代码 c# mysql数据库_c mysql操作数据库代码_05

二、对数据库进行增删改操作
使用ExecuteNonQuery()函数,返回值为数据表中被影响的行数。只有Update、Insert、Delete会影响行数,当返回值为-1时,说明操作执行失败,当返回值为0时说明无影响。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace MySqlCmd
{
    class Program
    {
        static void Main(string[] args)
        {
            string connetStr = "server=localhost;port=3306;user=root;password=123456;database=Demo3;";
            MySqlConnection conn = new MySqlConnection(connetStr);
            try
            {
                conn.Open();
                string sqlCmd = "delete from customer where userId=4";
                MySqlCommand cmd = new MySqlCommand(sqlCmd, conn);
                int num = cmd.ExecuteNonQuery();
                Console.WriteLine("影响行数" + num);
            }
            catch(MySqlException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                conn.Close();
            }
            
        }
    }
}

运行结果:

c mysql操作数据库代码 c# mysql数据库_mysql_06


三、ExcuteScalar()

执行CommandText属性指定的内容,并返回执行结果集的第一行第一列的值(此方法只用来执行Select语句),例如,在使用select count (*) from …语句返回就行数时,并不需要遍历所有行,就可以用ExcuteScalar()函数。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace MySqlCmd
{
    class Program
    {
        static void Main(string[] args)
        {
            string connetStr = "server=localhost;port=3306;user=root;password=123456;database=classicmodels;";
            MySqlConnection conn = new MySqlConnection(connetStr);
            try
            {
                conn.Open();
                string sqlCmd = "select * from customers";
                MySqlCommand cmd = new MySqlCommand(sqlCmd, conn);
                Console.WriteLine(cmd.ExecuteScalar());
            }
            catch(MySqlException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                conn.Close();
            }
            
        }
    }
}

运行结果:

c mysql操作数据库代码 c# mysql数据库_数据库_07


四、读取数据DataReader的属性与方法

属性:

1.FieldCount—说去字段的数目

2.HasRows—数据读取器是否包含一行或多行,false表示没有行

方法:

GetName(col)获取第col列的字段名

GetOrdinal()获取字段名为Name的列的序号

Read()读取下一条记录,返回布尔值 True表示还有也下一条数据

Close()关闭数据对象