C# MySQL 数据库编程

目录:
1.快速入门
2.简明示例
3.详细教程
4.MySqlConnection 对象
5.MySqlCommand 对象

快速入门

1、下载mysql.Data.dll,在解决方案->引用中引入,并在文件头部引入

using MySql.Data.MySqlClient;

2、创建MySqlConnection对象(链接库)

string connstr = "data source=localhost;database=cs_test;user id=root;password=123456;pooling=false;charset=utf8";//pooling代表是否使用连接池
MySqlConnection conn = new MySqlConnection(connstr);

 3、创建对应操作的MySqlCommand对象(测试数据库表名characters,属性列:id,names,passwords)

string sql = "select * from characters";
MySqlCommand cmd = new MySqlCommand(sql,conn);

4、针对不同操作,MySqlCommand对象有三个常用方法

(1)查找多行 : ExecuteReader()方法

返回一个MysqlDataReader对象,包含多个行,可以用其Read方法逐行读取。

对于每行元素,可以用getXXX()方法读取属性值,XXX为该属性类型,参数为属性名或者该属性为这张表的第几列。

可以用IsDBNull()方法判断是否为空,参数只能是该属性为这张表的第几列(即只能是数字)

    conn.Open();
    MySqlDataReader reader = cmd.ExecuteReader();
    Console.WriteLine("id\t姓名\t密码");
    while (reader.Read())
    {
        Console.Write(reader.GetInt32("id")+"\t");
        if (reader.IsDBNull(1))
        {
            Console.Write("空\t");
        }
        else
        {
            Console.Write(reader.GetString("names")+"\t");
        }
        if (reader.IsDBNull(2))
        {
            Console.Write("空\n");
        }
        else
        {
        Console.Write(reader.GetString("passwords")+"\n");
        }
    }
    conn.Close();

(2)查找单个: ExecuteScalar()

返回值为查找到的元祖第一个属性,以object类型返回

string sql2 = "select names from characters where id=2";
MySqlCommand cmd2 = new MySqlCommand(sql2,conn);
conn.Open();
string names = cmd2.ExecuteScalar().ToString();
Console.WriteLine(names);
conn.Close();

(3)增、删、改: ExecuteNonQuery()

返回值为int,不成功是0,成功是1

string sql3 = "insert into characters (names,passwords) values ('XXX','1234456')";
MySqlCommand cmd3 = new MySqlCommand(sql3,conn);
conn.Open();
int s = cmd3.ExecuteNonQuery();
if (s == 0) 
Console.WriteLine("false");
else 
Console.WriteLine("success");
conn.Close();

5、完整代码

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

namespace mysql_test
{
    class mysqlcz{
        public mysqlcz()
        {
            string connstr = "data source=localhost;database=csceshi;user id=root;password=123456;pooling=false;charset=utf8";
            using (MySqlConnection conn = new MySqlConnection(connstr))
            {
                string sql = "select * from characters";
                MySqlCommand cmd = new MySqlCommand(sql,conn);
                conn.Open();
                MySqlDataReader reader = cmd.ExecuteReader();
                Console.WriteLine("id\t姓名\t密码");
                while (reader.Read())
                {
                    Console.Write(reader.GetInt32("id")+"\t");
                    if (reader.IsDBNull(1))
                    {
                        Console.Write("空\t");
                    }
                    else
                    {
                        Console.Write(reader.GetString("names")+"\t");
                    }

                    if (reader.IsDBNull(2))
                    {
                        Console.Write("空\n");
                    }
                    else
                    {
                        Console.Write(reader.GetString("passwords")+"\n");
                    }
                }
                conn.Close();<br>                string sql2 = "select names from characters where id=2";
                MySqlCommand cmd2 = new MySqlCommand(sql2,conn);
                conn.Open();
                string names = cmd2.ExecuteScalar().ToString();
                Console.WriteLine(names);
                conn.Close();

                string sql3 = "insert into characters (names,passwords) values ('XXX','1234456')";
                MySqlCommand cmd3 = new MySqlCommand(sql3,conn);
                conn.Open();
                int s = cmd3.ExecuteNonQuery();
                if (s == 0) Console.WriteLine("false");
                else Console.WriteLine("success");
                conn.Close();
            }
            Console.ReadLine();
        }        
        
       
    }
    class Program
    {
        static void Main(string[] args)
        {
            mysqlcz mt = new mysqlcz();
        }
    }
}

 6、sql语句参数化

为防止sql注入,尽量不要使用字符串拼接的方法拼接sql字符串

string uname=Console.ReadLine();
string upwd=Console.ReadLine();//获取用户输入
string sql="insert into characters (names,passwords) values (@name,@pwd)";//使用@符构造sql变量
MysqlCommand cmd = new MysqlCommand(sql,conn);
//使用MysqlCommand对象的parameters属性,该属性为像sql语句传递的参数集合,使用add方法向其中添加参数,参数以MysqlParameters对象形式传递
cmd.parameters.Add(new MysqlParametes("@name",uname));
cmd.parameters.Add(new MysqlParameters("@pwd",upwd));
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

MySqlConnection 对象

为了让您的 MySQL Connector/NET 应用程序连接到 MySQL 数据库,它必须使用 MySqlConnection对象建立连接。

构造MySqlConnection函数将连接字符串作为其参数之一。连接字符串提供了连接到 MySQL 数据库的必要信息。连接字符串在第 4 章,连接器/NET 连接中进行了更全面的讨论 。有关支持的连接字符串选项的列表,请参阅 第 4.5 节,“连接器/NET 8.0 连接选项参考”。

以下代码显示了如何创建连接对象/

using System;
using System.Data;

using MySql.Data;
using MySql.Data.MySqlClient;

public class Tutorial1
{
    public static void Main()
    {
        string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
        MySqlConnection conn = new MySqlConnection(connStr);
        try
        {
            Console.WriteLine("Connecting to MySQL...");
            conn.Open();
            // Perform database operations
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
        conn.Close();
        Console.WriteLine("Done.");
    }
}

调用构造函数时MySqlConnection,会返回一个连接对象,用于后续的数据库操作。在进行任何其他操作之前打开连接。在应用程序退出之前,通过调用Close 连接对象关闭与数据库的连接。

有时,对连接对象执行的尝试Open可能会失败,从而生成可以使用标准异常处理代码处理的异常。

在本节中,您学习了如何创建与 MySQL 数据库的连接,以及打开和关闭相应的连接对象。


MySqlCommand 对象

与 MySQL 数据库建立连接后,下一步可让您执行数据库操作。这个任务可以通过使用 MySqlCommand对象来完成。

创建后,您可以调用三个主要的方法:

  • ExecuteReader查询数据库。结果通常在一个 MySqlDataReader对象中返回,由 ExecuteReader.
  • ExecuteNonQuery插入、更新和删除数据。
  • ExecuteScalar返回单个值。

创建对象后MySqlCommand,您可以在其上调用前面的方法之一来执行数据库操作,例如执行查询。结果通常返回到一个MySqlDataReader对象中,然后进行处理。例如,结果可能显示为以下代码示例所示。

using System;
using System.Data;

using MySql.Data;
using MySql.Data.MySqlClient;

public class Tutorial2
{
    public static void Main()
    {
        string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
        MySqlConnection conn = new MySqlConnection(connStr);
        try
        {
            Console.WriteLine("Connecting to MySQL...");
            conn.Open();

            string sql = "SELECT Name, HeadOfState FROM Country WHERE Continent='Oceania'";
            MySqlCommand cmd = new MySqlCommand(sql, conn);
            MySqlDataReader rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {
                Console.WriteLine(rdr[0]+" -- "+rdr[1]);
            }
            rdr.Close();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

        conn.Close();
        Console.WriteLine("Done.");
    }
}

创建并打开连接后,代码将创建一个MySqlCommand对象。然后将要执行的 SQL 查询传递给 MySqlCommand构造函数。然后使用该 ExecuteReader方法生成 MySqlReader对象。对象包含在 对象MySqlReader上执行的 SQL 生成的结果 MySqlCommand。在MySqlReader对象中获得结果后,即可对结果进行处理。在这种情况下,信息通过while循环打印出来。最后, MySqlReader通过调用Close方法来处理对象。

下一个示例显示了如何使用该 ExecuteNonQuery方法。

执行ExecuteNonQuery 方法调用的过程更简单,因为不需要创建对象来存储结果。这是因为ExecuteNonQuery 仅用于插入、更新和删除数据。以下示例说明了对 Country表的简单更新:

using System;
using System.Data;

using MySql.Data;
using MySql.Data.MySqlClient;

public class Tutorial3
{
    public static void Main()
    {
        string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
        MySqlConnection conn = new MySqlConnection(connStr);
        try
        {
            Console.WriteLine("Connecting to MySQL...");
            conn.Open();

            string sql = "INSERT INTO Country (Name, HeadOfState, Continent) VALUES ('Disneyland','Mickey Mouse', 'North America')";
            MySqlCommand cmd = new MySqlCommand(sql, conn);
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

        conn.Close();
        Console.WriteLine("Done.");
    }
}

构造查询,MySqlCommand 创建对象并在对象ExecuteNonQuery上调用方法MySqlCommand您可以使用mysql访问您的 MySQL 数据库并验证更新是否正确执行。

最后,您可以使用该ExecuteScalar方法返回单个值。同样,这很简单,因为 MySqlDataReader不需要对象来存储结果,而是使用变量来代替。以下代码说明了如何使用该ExecuteScalar 方法:

using System;
using System.Data;

using MySql.Data;
using MySql.Data.MySqlClient;

public class Tutorial4
{
    public static void Main()
    {
        string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
        MySqlConnection conn = new MySqlConnection(connStr);
        try
        {
            Console.WriteLine("Connecting to MySQL...");
            conn.Open();

            string sql = "SELECT COUNT(*) FROM Country";
            MySqlCommand cmd = new MySqlCommand(sql, conn);
            object result = cmd.ExecuteScalar();
            if (result != null)
            {
                int r = Convert.ToInt32(result);
                Console.WriteLine("Number of countries in the world database is: " + r);
            }

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

        conn.Close();
        Console.WriteLine("Done.");
    }
}

此示例使用一个简单的查询来计算 Country表中的行数。通过调用对象获得ExecuteScalar结果 MySqlCommand


简明示例:

C#操作mysql需要添加相应版本的MySql.Data.dll引用

MysqlBase.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;
 
namespace 一键配置工具
{
    class MysqlBase
    {
        private MySqlConnection conn = null;
        private MySqlCommand command = null;
        private MySqlDataReader reader = null;
 
        /// <summary>
        /// 构造方法里建议连接
        /// </summary>
        /// <param name="connstr"></param>
        public MysqlBase(string connstr)
        {
            //我这里是在构造函数里传入mysql连接语句
            conn = new MySqlConnection(connstr);
        }
        /// <summary>
        /// 发送指令
        /// </summary>
        /// <param name="sql"></param>
        public void CreateCommand(string sql)
        {
            conn.Open();
            command = new MySqlCommand(sql, conn);
        }
        /// <summary>
        /// 增、删、改公共方法
        /// </summary>
        /// <returns></returns>
        public int commonExecute()
        {
            int res = -1;
            try
            {
                res = command.ExecuteNonQuery();
            }catch(MySqlException ex)
            {
                Console.WriteLine("操作失败!" + ex.Message);
            }
            conn.Close();
            return res;
        }
        /// <summary>
        /// 查询方法
        /// 注意:尽量不要用select * from table表(返回的数据过长时,DataTable可能会出错),最好指定要查询的字段。
        /// </summary>
        /// <returns></returns>
        public DataTable selectExecute()
        {
            DataTable dt = new DataTable();
            using (reader = command.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(reader);
            }
            return dt;
        }
 
    }
}

示例:

string mysqlStr = "Database=mydata_db;Data Source=127.0.0.1;User Id=root;Password=root;;pooling=false;CharSet=utf8;port=3306;"
MysqlBase mysqlBase = new MysqlBase(mysqlStr);

//查询
string sql = "select * from student where id=" + id;
mysqlBase.CreateCommand(sql);
DataTable dt = mysqlBase.selectExecute();
if (dt.Rows.Count != 0)
{
    int id = Convert.ToInt32(dt.Rows[0][0]);
    int name = dt.Rows[0][1];
}
else
{
    MessageBox.Show("无数据");
}

string sql = "update student set name='张三',age=20 where id="+id;
mysqlBase.CreateCommand(sql);
int res = mysqlBase.commonExecute();
if (res > 0)
{
    MessageBox.Show("更新成功");
}else{
    MessageBox.Show("更新失败");
}


详细教程

在本文中,我们将介绍如何在 C# 中对 MySQL 进行编程。我们使用 ADO.NET。

MySQL

MySQL是一个领先的开源数据库管理系统。它是一个多用户、多线程的数据库管理系统。MySQL在网络上特别受欢迎。MySQL数据库在最重要的操作系统平台上可用。它运行在BSD Unix,Linux,Windows或Mac操作系统上,MySQL有两个版本:MySQL服务器系统和MySQL嵌入式系统。

ADO.NET

ADO.NET 是统一访问关系数据库、XML 文件和其他应用程序数据的规范。数据是 mySQL 数据库的 ADO.NET 规范的实现。它是用 C# 语言编写的驱动程序,可用于所有 .NET 语言。

$ dotnet add package MySql.Data

我们将该包包含在我们的 .NET Core 项目中。

.NET 数据访问接口模型的核心元素。
创建与特定数据源的连接。该对象对数据源执行 SQL 语句。
从数据源读取数据流。
MySqlConnection
MySqlCommand
MySqlDataReaderDataSet
MySqlDataProvider
MySqlConnection
MySqlCommand
MySqlDataReader

该对象用于对大量数据进行脱机工作。它是一种断开连接的数据表示形式,可以保存来自各种不同源的数据。两者都用于处理数据;它们在不同的环境中使用。如果我们只需要读取查询的结果,则是更好的选择。如果我们需要更广泛地处理数据,或者我们想要将 Winforms 控件绑定到数据库表,则首选。
DataSet
MySqlDataReaderDataSet
MySqlDataReaderDataSet

C# MySQL 版本

以下程序,我们检查MySQL服务器的版本。

Program.cs

using MySql.Data.MySqlClient;

string cs = @"server=localhost;userid=dbuser;password=s$cret;database=testdb";

using var con = new MySqlConnection(cs);
con.Open();

Console.WriteLine($"MySQL version : {con.ServerVersion}");

我们连接到数据库并获取有关MySQL服务器的一些信息。

using MySql.Data.MySqlClient;

我们导入 MySQL 数据提供程序的元素。

string cs = @"server=localhost;userid=dbuser;password=s$cret;database=testdb";

这是连接字符串。数据提供程序使用它来建立与数据库的连接。我们指定主机名、用户名、密码和数据库名称。

using var con = new MySqlConnection(cs);

将创建一个对象。此对象用于打开与数据库的连接。该语句在变量超出范围时释放数据库连接资源。MySQLConnection using

con.Open();

此行将打开数据库连接。

Console.WriteLine($"MySQL version : {con.ServerVersion}");

在这里,我们使用连接对象的属性打印MySQL的版本。Server Version

$ dotnet run
MySQL version: 8.0.29-0ubuntu0.22.04.2

C# MySQL SELECT 查询语句

下面的示例使用 SELECT 语句确定 MySQL 的版本。

Program.cs

using MySql.Data.MySqlClient;

string cs = @"server=localhost;userid=dbuser;password=s$cret;database=mydb";

using var con = new MySqlConnection(cs);
con.Open();

var stm = "SELECT VERSION()";
var cmd = new MySqlCommand(stm, con);

var version = cmd.ExecuteScalar().ToString();
Console.WriteLine($"MySQL version: {version}");

我们检查 MySQL 数据库的版本。这次使用 SQL 查询。

var stm = "SELECT VERSION()";

这是 SQL 选择语句。它返回数据库的版本。这是一个内置的 MySQL 函数。VERSION

var cmd = new MySqlCommand(stm, con);

是用于对数据库执行查询的对象。参数是 SQL 语句和连接对象。MySqlCommand

var version = cmd.ExecuteScalar().ToString();

有些查询仅返回标量值。在我们的例子中,我们需要一个指定数据库版本的简单字符串。在这种情况下使用 。ExecuteScalar

C# MySQL 创建表

在下面的示例中,我们创建一个数据库表并用数据填充它。

Program.cs

using MySql.Data.MySqlClient;

string cs = @"server=localhost;userid=dbuser;password=s$cret;database=testdb";

using var con = new MySqlConnection(cs);
con.Open();

using var cmd = new MySqlCommand();
cmd.Connection = con;

cmd.CommandText = "DROP TABLE IF EXISTS cars";
cmd.ExecuteNonQuery();

cmd.CommandText = @"CREATE TABLE cars(id INTEGER PRIMARY KEY AUTO_INCREMENT,
        name TEXT, price INT)";
cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO cars(name, price) VALUES('Audi',52642)";
cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO cars(name, price) VALUES('Mercedes',57127)";
cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO cars(name, price) VALUES('Skoda',9000)";
cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO cars(name, price) VALUES('Volvo',29000)";
cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO cars(name, price) VALUES('Bentley',350000)";
cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO cars(name, price) VALUES('Citroen',21000)";
cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO cars(name, price) VALUES('Hummer',41400)";
cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO cars(name, price) VALUES('Volkswagen',21600)";
cmd.ExecuteNonQuery();

Console.WriteLine("Table cars created");

在此示例中,我们创建了一个包含八行的表。cars

cmd.CommandText = "DROP TABLE IF EXISTS cars";
cmd.ExecuteNonQuery();

首先,如果表已存在,我们将删除它。如果我们不需要结果集,例如 , 或 语句,则使用该方法。ExecuteNonQuery DROP INSERT DELETE

cmd.CommandText = @"CREATE TABLE cars(id INTEGER PRIMARY KEY AUTO_INCREMENT,
        name TEXT, price INT)";
cmd.ExecuteNonQuery();;

将创建表。关键字使列在 MySQL 中自动递增。cars AUTO_INCREMENT

cmd.CommandText = "INSERT INTO cars(name, price) VALUES('Audi',52642)";
cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO cars(name, price) VALUES('Mercedes',57127)";
cmd.ExecuteNonQuery();
...

在这里,我们在表中插入两行。

$ dotnet run
Table cars created

我们运行程序。

$ mysql -u dbuser -p

我们使用该工具连接到MySQL服务器。mysql

MariaDB [(none)]&gt; use testdb;
Database changed
MariaDB [testdb]&gt; SELECT * FROM cars;
+----+------------+--------+
| id | name       | price  |
+----+------------+--------+
|  1 | Audi       |  52642 |
|  2 | Mercedes   |  57127 |
|  3 | Skoda      |   9000 |
|  4 | Volvo      |  29000 |
|  5 | Bentley    | 350000 |
|  6 | Citroen    |  21000 |
|  7 | Hummer     |  41400 |
|  8 | Volkswagen |  21600 |
+----+------------+--------+
8 rows in set (0.00 sec)

我们验证数据。已成功创建表。cars

C# MySQL prepared语句

预处理语句可提高安全性和性能。当我们编写预准备语句时,我们使用占位符,而不是直接将值写入语句中。

Program.cs

using MySql.Data.MySqlClient;

string cs = @"server=localhost;userid=dbuser;password=s$cret;database=testdb";

using var con = new MySqlConnection(cs);
con.Open();

var sql = "INSERT INTO cars(name, price) VALUES(@name, @price)";
using var cmd = new MySqlCommand(sql, con);

cmd.Parameters.AddWithValue("@name", "BMW");
cmd.Parameters.AddWithValue("@price", 36600);
cmd.Prepare();

cmd.ExecuteNonQuery();

Console.WriteLine("row inserted");

我们在表格中加了一辆新车。我们使用参数化命令。cars

var sql = "INSERT INTO cars(name, price) VALUES(@name, @price)";
using var cmd = new MySqlCommand(sql, con);

当我们编写预准备语句时,我们使用占位符,而不是直接将值写入语句中。预准备语句速度更快,可防止 SQL 注入攻击。和 是占位符,稍后将填充这些占位符。@name @price

cmd.Parameters.AddWithValue("@name", "BMW");
cmd.Parameters.AddWithValue("@price", 36600);
cmd.Prepare();

值使用该方法绑定到占位符。Add With Value

cmd.ExecuteNonQuery();

将执行预准备语句。当我们不希望返回任何数据时,我们使用对象的方法。ExecuteNonQueryMySQLCommand

C# MySqlDataReader

是用于从数据库中检索数据的对象。它提供对查询结果的快速、只进、只读访问。这是从表中检索数据的最有效方法。MySqlDataReader

Program.cs

using MySql.Data.MySqlClient;

string cs = @"server=localhost;userid=dbuser;password=s$cret;database=testdb";

using var con = new MySqlConnection(cs);
con.Open();

string sql = "SELECT * FROM cars";
using var cmd = new MySqlCommand(sql, con);

using MySqlDataReader rdr = cmd.ExecuteReader();

while (rdr.Read())
{
    Console.WriteLine("{0} {1} {2}", rdr.GetInt32(0), rdr.GetString(1), 
            rdr.GetInt32(2));
}

我们从表中获取所有行并将其打印到控制台。cars

using MySqlDataReader rdr = cmd.ExecuteReader();

要创建一个,我们调用对象的方法。MySQLDataReader ExecuteReader MySqlCommand

while (rdr.Read())
{
    Console.WriteLine("{0} {1} {2}", rdr.GetInt32(0), rdr.GetString(1), 
            rdr.GetInt32(2));
}

该方法将数据读取器推进到下一条记录。如果有更多的行,它返回;否则。我们可以使用数组索引表示法检索值,也可以使用特定方法来访问其本机数据类型中的列值。后者效率更高。Read true false

$ dotnet run
1 Audi 52642
2 Mercedes 57127
3 Skoda 9000
4 Volvo 29000
5 Bentley 350000
6 Citroen 21000
7 Hummer 41400
8 Volkswagen 21600
9 BMW 36600

C# MySQL列标题

在以下示例中,我们使用数据库表中的数据打印列标题。

Program.cs

using MySql.Data.MySqlClient;

string cs = @"server=localhost;userid=dbuser;password=s$cret;database=testdb";

using var con = new MySqlConnection(cs);
con.Open();

var sql = "SELECT * FROM cars";

using var cmd = new MySqlCommand(sql, con);

using MySqlDataReader rdr = cmd.ExecuteReader();
Console.WriteLine($"{rdr.GetName(0),-4} {rdr.GetName(1),-10} {rdr.GetName(2),10}");

while (rdr.Read())
{
    Console.WriteLine($"{rdr.GetInt32(0),-4} {rdr.GetString(1),-10} {rdr.GetInt32(2),10}");
}

在此示例中,我们从表中选择所有行及其列名。cars

Console.WriteLine($"{rdr.GetName(0),-4} {rdr.GetName(1),-10} {rdr.GetName(2),10}");

我们用阅读器的方法获取列的名称。GetName

while (rdr.Read())
{
    Console.WriteLine($"{rdr.GetInt32(0),-4} {rdr.GetString(1),-10} {rdr.GetInt32(2),10}");
}

我们将 SQL 语句返回的数据打印到终端。

$ dotnet run
id   name            price
1    Audi            52642
2    Mercedes        57127
3    Skoda            9000
4    Volvo           29000
5    Bentley        350000
6    Citroen         21000
7    Hummer          41400
8    Volkswagen      21600
9    BMW             36600

在本文中,我们展示了如何在C#中对MySQL数据库进行编程。