在 C# 中连接 MySQL 数据库,需要使用 MySQL 提供的官方数据访问组件MySqlConnector
(推荐)或MySql.Data
(旧版)。以下是详细的连接步骤和示例:
1. 安装 MySQL 数据访问组件
首先需要通过 NuGet 包管理器安装 MySQL 连接库:
# 使用NuGet包管理器控制台
Install-Package MySqlConnector
或在.csproj
文件中添加引用:
<PackageReference Include="MySqlConnector" Version="2.3.11" />
也可以使用手动安装,
打开Visual Studio 2020软件,选择对应需要连接Msyql数据库的项目
选择解决方案的引用
选择添加管理程NuGet序包,
搜索MySqlConnector,程序包
点击右上角进行下载
等待一会,就完成了
在已安装这里就可以找到了,就可以进行,对应链接Mysql数据库的命令的编写了
输入下面的代码进行连接,一定要注意账号和密码
链接代码:
using System;
using MySqlConnector; // 使用MySqlConnector命名空间
class Program
{
static void Main()
{
string connectionString = "Server=localhost;Database=testdb;Uid=root;Pwd=yourpassword;";
try
{
// 创建并打开数据库连接
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
Console.WriteLine("MySQL连接成功!");
}
}
catch (MySqlException ex)
{
Console.WriteLine($"MySQL错误: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"其他错误: {ex.Message}");
}
}
}
出现下面页面,即连接成功
2. 构建数据库连接字符串
连接字符串包含服务器地址、数据库名、用户名和密码等信息。示例如下:
string connectionString = "Server=localhost;Database=yourdatabase;Uid=yourusername;Pwd=yourpassword;";
常用参数说明:
-
Server
:MySQL 服务器地址(如localhost
或 IP 地址)。 -
Database
:要连接的数据库名称。 -
Uid
和Pwd
:数据库用户名和密码。 -
其他可选参数:
Port=3306
(默认端口)、SslMode=Required
(启用 SSL)等。
3. 连接数据库并执行 SQL 命令
以下是一个完整的示例,展示如何连接 MySQL 并执行查询和插入操作:
using System;
using MySqlConnector; // 使用MySqlConnector命名空间
class Program
{
static void Main()
{
string connectionString = "Server=localhost;Database=testdb;Uid=root;Pwd=yourpassword;";
try
{
// 创建并打开数据库连接
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
Console.WriteLine("MySQL连接成功!");
// 执行查询示例
string selectQuery = "SELECT id, name FROM users";
using (MySqlCommand command = new MySqlCommand(selectQuery, connection))
{
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"ID: {reader.GetInt32(0)}, Name: {reader.GetString(1)}");
}
}
}
// 执行插入示例(使用参数化查询防止SQL注入)
string insertQuery = "INSERT INTO users (name, age) VALUES (@name, @age)";
using (MySqlCommand insertCommand = new MySqlCommand(insertQuery, connection))
{
insertCommand.Parameters.AddWithValue("@name", "John Doe");
insertCommand.Parameters.AddWithValue("@age", 30);
int rowsAffected = insertCommand.ExecuteNonQuery();
Console.WriteLine($"插入了{rowsAffected}行数据。");
}
}
}
catch (MySqlException ex)
{
Console.WriteLine($"MySQL错误: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"其他错误: {ex.Message}");
}
}
}
4. 关键操作说明
查询数据
使用ExecuteReader()
方法执行 SELECT 语句:
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// 通过列索引或列名获取数据
int id = reader.GetInt32(0); // 通过索引获取
string name = reader.GetString("name"); // 通过列名获取
}
}
执行非查询命令
使用ExecuteNonQuery()
方法执行 INSERT、UPDATE、DELETE 等操作:
int rowsAffected = command.ExecuteNonQuery();
参数化查询
为防止 SQL 注入,始终使用参数化查询:
command.Parameters.AddWithValue("@参数名", 参数值);
5. 异常处理与资源管理
-
使用
using
语句确保连接和命令对象自动释放资源。 -
捕获
MySqlException
处理 MySQL 特定错误(如连接失败、SQL 语法错误)。 -
捕获通用
Exception
处理其他异常。
6. 其他常用操作
执行存储过程
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "sp_GetUser";
获取自增 ID
insertCommand.ExecuteNonQuery();
int newId = (int)insertCommand.LastInsertedId;
通过以上步骤,你可以在 C# 中成功连接并操作 MySQL 数据库。