当前位置: 首页 > news >正文

使用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 项目中。

MySqlConnectionMySqlCommandMySqlDataReaderDataSet, MySqlDataProvider 是 .NET 数据提供程序模型的核心元素。

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

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; 

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

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

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

using var con = new MySqlConnection(cs);

此行打开数据库连接。

con.Open();

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

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

C# MySQL SELECT 语句 

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 创建表

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 准备好的语句

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

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 列标题

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

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

(结束)

http://www.lryc.cn/news/501712.html

相关文章:

  • Scala函数的泛型
  • 云轴科技ZStack亮相中国生成式AI大会上海站 展现AI Infra新势力
  • 态感知与势感知
  • 汽车零部件设计之——发动机曲轴预应力模态分析仿真APP
  • 谷歌浏览器的网页数据导出与导入方法
  • pytroch环境安装-pycharm
  • 【大模型】PostgreSQL是向量数据库吗
  • 【PyQt5教程 一】Qt Designer 安装及其使用方法说明,附程序源码
  • Qt 联合Halcon配置
  • Vue导出报表功能【动态表头+动态列】
  • C#调用python 程序
  • day11 性能测试(4)——Jmeter使用(黑马的完结,课程不全)
  • 机器学习详解(4):多层感知机MLP之理论学习
  • 【C++】类中的特殊成员——静态成员,友元成员,常量成员
  • 开源 Agent 小屋
  • Mina之账户模型
  • STM32 ADC 配置
  • 练9:进制转换
  • 善于运用指针--函数与指针
  • Microi吾码低代码平台:前端源码的本地运行探索
  • 十一、容器化 vs 虚拟化-Docker 使用
  • 实践项目2-自动计价电子秤
  • iOS如何操作更新推送证书
  • WSL2 在vscode无法连接copilot
  • HTA8998 实时音频跟踪的高效内置升压2x10W免电感立体声ABID类音频功放
  • 用ChatGPT-o1进行论文内容润色效果怎么样?
  • 《探索 Jetpack Compose:构建现代化 Android UI 的利器》
  • cocos creator 的 widget组件的使用及踩坑
  • Baumer工业相机的EMVA1288 数据报告简介
  • Docker 安装 中文版 GitLab