使用C#基于ADO.NET编写MySQL的程序

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

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

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

MySqlConnection, MySqlCommand, MySqlDataReader, DataSet, MySqlDataProvider 是 .NET 数据提供程序模型的核心元素。

对象DataSet用于离线处理大量数据。它是一种断开连接的数据表示,可以保存来自各种不同来源的数据。MySqlDataReader和都DataSet 用于处理数据;它们在不同情况下使用。如果我们只需要读取查询结果,那么MySqlDataReader是更好的选择。如果我们需要更广泛的数据处理,或者我们想将 Winforms 控件绑定到数据库表,那么DataSet是首选。

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 数据提供程序的元素。

cs 复制代码
using MySql.Data.MySqlClient; 

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

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

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

cs 复制代码
using var con = new MySqlConnection(cs);

此行打开数据库连接。

cs 复制代码
con.Open();

ServerVersion 这里我们使用连接对象的属性打印 MySQL 的版本。

cs 复制代码
Console.WriteLine($"MySQL version : {con.ServerVersion}");

C# MySQL SELECT 语句

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}");

C# MySQL 创建表

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");

C# MySQL 准备好的语句

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");

C# MySqlDataReader

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));
}

C# MySQL 列标题

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

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));
}

(结束)

相关推荐
Smile丶凉轩几秒前
数据库面试知识点总结
数据库·c++·mysql
RainbowSea1 小时前
9-1. MySQL 性能分析工具的使用——last\_query\_cost,慢查询日志
数据库·sql·mysql
Sui_Network1 小时前
Sui 如何支持各种类型的 Web3 游戏
大数据·数据库·人工智能·游戏·web3·区块链
万兴丶1 小时前
Unity 适用于单机游戏的红点系统(前缀树 | 数据结构 | 设计模式 | 算法 | 含源码)
数据结构·unity·设计模式·c#
ZKNOW甄知科技2 小时前
IT服务运营管理体系的常用方法论与实践指南(上)
大数据·数据库·人工智能
程序猿多布3 小时前
C#设计模式 学习笔记
设计模式·c#
黄雪超3 小时前
深入HBase——核心组件
数据结构·数据库·hbase
我爱松子鱼3 小时前
mysql之InnoDB Buffer Pool 深度解析与性能优化
android·mysql·性能优化
qq_529835354 小时前
Redis作为缓存和数据库的数据一致性问题
数据库·redis·缓存
知初~8 小时前
出行项目案例
hive·hadoop·redis·sql·mysql·spark·database