C#連接MySQL

转自:http://blog.hsdn.net/1433.html

我在五年前(好久遠…)寫過一篇關於C# 連接 MySQL的文章,由於年代久遠MySQL也更新了相關的DLL,所以舊的程式會發生一些錯誤,因此我更新了這段程式,希望對於有使用C#連接到MySQL的朋友有所幫助。

安裝MySQL Connector
1. 首先請先到MySQL官方網站下載新的Connector:Connector/Net 6.2
2. 安裝完畢之後請開啟你的Visual Studio,點選專案名稱後按右鍵,接著點選Add Reference
MySQL Connector Add Reference

3. 按下Add Reference之後會開啟下面的視窗,切換到Browse頁籤,如果剛剛安裝Connector的時候是使用預設的路徑,那麼請切換到C:\Program Files\MySQL\MySQL Connector Net 6.2.1\Assemblies這個路徑,就可以看到跟我截圖一樣的畫面。
Add Reference MySQL Connector Step 2

4. 根據你的需求選擇要加入的DLL,選好之後按下OK,可以在Solution Explorer看到MySql.Data
Add Reference MySQL Connector Step 4

撰寫程式

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

namespace mysql
{
class Program
{
static void Main(string[] args)
{
string dbHost = "資料庫位址";
string dbUser = "資料庫使用者名稱";
string dbPass = "資料庫使用者密碼";
string dbName = "資料庫名稱";

// 如果有特殊的編碼在database後面請加上;CharSet=編碼, utf8請使用utf8_general_ci
string connStr = "server="+dbHost+";uid="+dbUser+";pwd="+dbPass+";database="+dbName;
MySqlConnection conn = new MySqlConnection(connStr);

// 連線到資料庫
try
{
conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex) {
switch (ex.Number)
{
case 0:
Console.WriteLine("無法連線到資料庫.");
break;
case 1045:
Console.WriteLine("使用者帳號或密碼錯誤,請再試一次.");
break;
}
}

// 進行select
string SQL = "select plain from yammer order by id desc limit 0,10 ";
try
{
MySqlCommand cmd = new MySqlCommand(SQL, conn);
MySqlDataReader myData = cmd.ExecuteReader();

if (!myData.HasRows)
{
// 如果沒有資料,顯示沒有資料的訊息
Console.WriteLine("No data.");
}
else
{
// 讀取資料並且顯示出來
while (myData.Read())
{
Console.WriteLine("Text={0}", myData.GetString(0));
}
myData.Close();
}
}
catch (MySql.Data.MySqlClient.MySqlException ex) {
Console.WriteLine("Error " + ex.Number + " : " + ex.Message);
}
}
}
}

執行結果,中文也可以正常顯示
C# connect to MySQL Result

如果有任何問題歡迎跟我一起討論


<think>好的,我现在需要帮助用户找到如何使用C#连接MySQL数据库的示例代码。首先,我要回忆一下之前用户提供的引用内容,里面提到了几个关键点,比如需要安装MySQL和.NET连接器,使用MySqlConnection类,配置连接字符串,以及一些示例代码。 用户之前的问题是关于C#连接MySQL的示例代码,所以我要确保回答结构清晰,分步骤说明,并且提供正确的代码示例。根据系统级指令,我需要使用正确的LaTeX格式,但这里主要是代码和步骤,可能LaTeX用得不多,不过要注意数学表达式的格式。 首先,我应该按照步骤来组织回答,比如安装必要的组件、添加引用、配置连接字符串、创建连接对象、执行操作等。每个步骤需要简明扼要,并附上代码示例。同时,要参考用户提供的引用,比如引用[3]提到安装MySQL和.NET连接器,引用[2]中有DB类的代码示例,这些可以作为参考。 接下来,我需要检查示例代码是否正确。比如在引用[2]中,DB类的connect方法使用了MySqlConnection,并且有打开连接的代码。但要注意,每次执行command时都会新建连接,这可能导致连接未正确关闭,所以在示例中需要提醒使用using语句或及时关闭连接,避免资源泄漏。 另外,引用[5]提到下载MySQL连接器的NuGet包,这也是关键步骤,用户需要安装MySql.Data包。所以在步骤中要明确说明如何通过NuGet安装。 然后,关于连接字符串的格式,引用[2]和[5]给出了示例,比如server、port、user、password、database等参数。需要确保这些参数正确,并且用户替换为自己的数据库信息。 最后,执行数据库操作的部分,引用[2]中的示例有执行非查询和读取数据的方法,可以借鉴这些代码,但可能需要优化,比如使用参数化查询防止SQL注入,或者在示例中展示基本的增删查改操作。 可能的问题点:用户是否知道如何正确处理连接的开闭,是否了解异常处理,比如在连接失败时捕获异常。所以在示例代码中加入try-catch块可能会更好,但为了简洁,可能先提供基础示例,再在注意事项中提到。 总结回答结构: 1. 环境准备:安装MySQLMySql.Data包 2. 创建连接字符串 3. 建立和打开连接 4. 执行查询和命令 5. 关闭连接 6. 完整示例代码 7. 注意事项 需要确保每个步骤的代码正确,并且符合最佳实践,比如使用using语句管理连接生命周期,避免资源未释放的问题。 现在,把这些步骤整理成用户容易理解的形式,并引用相关的引用内容作为支持。例如,在创建连接部分引用[1]和[2],在安装部分引用[3]和[5]。 可能还需要添加相关问题,比如连接字符串的配置、异常处理、参数化查询等,帮助用户进一步学习。</think>### C#连接MySQL数据库分步指南 #### 一、环境准备 1. 安装MySQL服务器(社区版)[^5] 2. 安装NuGet包`MySql.Data`: ```bash Install-Package MySql.Data -Version 8.3.0 ``` #### 二、基础连接流程 1. **连接字符串配置** 格式示例: ```csharp string connStr = "server=127.0.0.1;port=3306;user=root;password=your_pwd;database=testdb;"; ``` [参数说明] - `server`: MySQL服务器IP(本地使用localhost) - `port`: 默认3306 - `CharSet`: 可选字符集配置 2. **创建连接对象** ```csharp using MySql.Data.MySqlClient; using (MySqlConnection conn = new MySqlConnection(connStr)) { conn.Open(); // 显式打开连接 // 执行数据库操作 } // 自动关闭连接 ``` [^1][^2] #### 三、完整示例代码 ```csharp using System; using MySql.Data.MySqlClient; class MySQLDemo { static void Main() { string connStr = "server=localhost;user=root;password=ss123456;database=testdb;"; try { using (MySqlConnection conn = new MySqlConnection(connStr)) { conn.Open(); Console.WriteLine("数据库连接成功"); // 执行查询 string sql = "SELECT * FROM users"; using (MySqlCommand cmd = new MySqlCommand(sql, conn)) { using (MySqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine($"ID: {reader["id"]}, 姓名: {reader["name"]}"); } } } } } catch (MySqlException ex) { Console.WriteLine($"错误代码: {ex.Number}\n错误信息: {ex.Message}"); } } } ``` #### 四、关键操作扩展 1. **增删改操作** ```csharp string insertSql = "INSERT INTO users (name) VALUES (@name)"; using (MySqlCommand cmd = new MySqlCommand(insertSql, conn)) { cmd.Parameters.AddWithValue("@name", "张三"); int affectedRows = cmd.ExecuteNonQuery(); Console.WriteLine($"已插入{affectedRows}条记录"); } ``` 2. **事务处理** ```csharp using (MySqlTransaction transaction = conn.BeginTransaction()) { try { // 执行多个命令 transaction.Commit(); } catch { transaction.Rollback(); } } ``` #### 五、注意事项 1. 使用`using`语句自动释放连接资源 2. 重要操作添加异常处理 3. 生产环境建议将连接字符串存储在配置文件中 4. 使用参数化查询防止SQL注入[^2]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值