C#连接mysql

先贴上原址:

1. http://blog.sina.com.cn/s/blog_43eb83b90100mb02.html

2. http://blog.sina.com.cn/s/blog_43eb83b90100mb08.html 转来学习,方便大家。

先看1.再看2

第一篇相当于是要搭环境,然后是简例。第二篇,就是一个mysql  CRUD的全过程。

我自己的实践中使用第一篇中的 第三方组件:Mysql.Data.dll 和第二篇中的代码进行操作,成功。。


第一篇:

第三方组件:Mysql.Data.dll
说明:去官方网站下载Mysql.Data.dll,然后在项目中添加该组件的引用,在代码页里输入using Mysql.Data.MysqlClient,我们就可以顺利的使用该类库的函数建立连接了。

以下是几个常用函数:

#region  建立MySql数据库连接
    /// <summary>
    /// 建立数据库连接.
    /// </summary>
    /// <returns>返回MySqlConnection对象</returns>
    public MySqlConnection getmysqlcon()
    {
        string M_str_sqlcon = "server=localhost;user id=root;password=root;database=abc"; //根据自己的设置
        MySqlConnection myCon = new MySqlConnection(M_str_sqlcon);
        return myCon;
    }
    #endregion

    #region  执行MySqlCommand命令
    /// <summary>
    /// 执行MySqlCommand
    /// </summary>
    /// <param name="M_str_sqlstr">SQL语句</param>
    public void getmysqlcom(string M_str_sqlstr)
    {
        MySqlConnection mysqlcon = this.getmysqlcon();
        mysqlcon.Open();
        MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon);
        mysqlcom.ExecuteNonQuery();
        mysqlcom.Dispose();
        mysqlcon.Close();
        mysqlcon.Dispose();
    }
    #endregion

#region  创建MySqlDataReader对象
    /// <summary>
    /// 创建一个MySqlDataReader对象
    /// </summary>
    /// <param name="M_str_sqlstr">SQL语句</param>
    /// <returns>返回MySqlDataReader对象</returns>
    public MySqlDataReader getmysqlread(string M_str_sqlstr)
    {
        MySqlConnection mysqlcon = this.getmysqlcon();
        MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon);
        mysqlcon.Open();
        MySqlDataReader mysqlread = mysqlcom.ExecuteReader(CommandBehavior.CloseConnection);
        return mysqlread;
    }
    #endregion

 

 

 

另一篇:

 

测试环境:Windows XP + MySql 5.0.24 + Visual C# 2008 Exdivss Edition
By lucas 2008.12.29
1、用MySQLDriverCS连接MySQL数据库
先下载和安装MySQLDriverCS,地址:
http://sourceforge.net/projects/mysqldrivercs/
在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中
注:我下载的是版本是 MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exe

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySQLDriverCS;
namespace mysql
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            MySQLConnection conn = null;
            conn = new MySQLConnection(new MySQLConnectionString("localhost", "inv", "root", "831025").AsString);
            conn.Open();
            MySQLCommand commn = new MySQLCommand("set names gb2312", conn);
            commn.ExecuteNonQuery();
            string sql = "select * from exchange ";
            MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            mda.Fill(ds, "table1");
            this.dataGrid1.DataSource = ds.Tables["table1"];
            conn.Close();
        }
    }
}


2、通过ODBC访问mysql数据库:
参考:http://www.microsoft.com/china/community/Column/63.mspx
1.      安装Microsoft ODBC.net:我安装的是mysql-connector-odbc-3.51.22-win32.msi
2.      安装MDAC 2.7或者更高版本:我安装的是mdac_typ.exe 2.7简体中文版
3.      安装MySQL的ODBC驱动程序:我安装的是 odbc_net.msi
4.      管理工具 -> 数据源ODBC –>配置DSN…
5.      解决方案管理中添加引用 Microsoft.Data.Odbc.dll(1.0.3300)
6.      代码中增加引用 using Microsoft.Data.Odbc;
 

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;   //vs2005好像没有这个命名空间,在c#2008下测试自动生成的
using System.Text;
using System.Windows.Forms;
using Microsoft.Data.Odbc;
namespace mysql
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
                                 "SERVER=localhost;" +
                                 "DATABASE=inv;" +
                                 "UID=root;" +
                                 "PASSWORD=831025;" +
                                 "OPTION=3";
            OdbcConnection MyConnection = new OdbcConnection(MyConString);
            MyConnection.Open();
            Console.WriteLine("\n success, connected successfully !\n");
            string query = "insert into test values( ''hello'', ''lucas'', ''liu'')";
            OdbcCommand cmd = new OdbcCommand(query, MyConnection);
            //处理异常:插入重复记录有异常
try{
   cmd.ExecuteNonQuery();
}
catch(Exception ex){
                 Console.WriteLine("record duplicate.");
}finally{
                 cmd.Dispose();
}
/
/
           MyConnection.Close();
        }
    }
}





第二篇 :

using System;
using System.Configuration;
using MySql.Data.MySqlClient;
/// <summary>
/// TestDatebase 的摘要说明
/// </summary>
public class TestDatebase
{
    public TestDatebase()
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
    }
    public static void Main(String[] args)
    {
        MySqlConnection mysql = getMySqlCon();
        //查询sql
        String sqlSearch = "select * from student";
        //插入sql
        String sqlInsert = "insert into student values (12,'张三',25,'大专')";
        //修改sql
        String sqlUpdate = "update student set name='李四' where id= 3";
        //删除sql
        String sqlDel = "delete from student where id = 12";
        //打印SQL语句
        Console.WriteLine(sqlDel);
        //四种语句对象
        //MySqlCommand mySqlCommand = getSqlCommand(sqlSearch, mysql);
        //MySqlCommand mySqlCommand = getSqlCommand(sqlInsert, mysql);
        //MySqlCommand mySqlCommand = getSqlCommand(sqlUpdate, mysql);
        MySqlCommand mySqlCommand = getSqlCommand(sqlDel, mysql);
        mysql.Open();
        //getResultset(mySqlCommand);
        //getInsert(mySqlCommand);
        //getUpdate(mySqlCommand);
        getDel(mySqlCommand);
        //记得关闭
        mysql.Close();
       String readLine = Console.ReadLine();
    }
    /// <summary>
    /// 建立mysql数据库链接
    /// </summary>
    /// <returns></returns>
    public static MySqlConnection getMySqlCon()
    {
        String mysqlStr = "Database=test;Data Source=127.0.0.1;User Id=root;Password=root;pooling=false;CharSet=utf8;port=3306";
        // String mySqlCon = ConfigurationManager.ConnectionStrings["MySqlCon"].ConnectionString;
        MySqlConnection mysql = new MySqlConnection(mysqlStr);
        return mysql;
    }
    /// <summary>
    /// 建立执行命令语句对象
    /// </summary>
    /// <param name="sql"></param>
    /// <param name="mysql"></param>
    /// <returns></returns>
    public static MySqlCommand getSqlCommand(String sql,MySqlConnection mysql)
    {
        MySqlCommand mySqlCommand = new MySqlCommand(sql, mysql);
        //  MySqlCommand mySqlCommand = new MySqlCommand(sql);
        // mySqlCommand.Connection = mysql;
        return mySqlCommand;
    }
    /// <summary>
    /// 查询并获得结果集并遍历
    /// </summary>
    /// <param name="mySqlCommand"></param>
    public static void getResultset(MySqlCommand mySqlCommand)
    {
        MySqlDataReader reader = mySqlCommand.ExecuteReader();
        try
        {
            while (reader.Read())
            {
                if (reader.HasRows)
                {
                    Console.WriteLine("编号:" + reader.GetInt32(0) + "|姓名:" + reader.GetString(1) + "|年龄:" + reader.GetInt32(2) + "|学历:" + reader.GetString(3));
                }
            }
        }
        catch (Exception)
        {

            Console.WriteLine("查询失败了!");
        }
        finally
        {
            reader.Close();
        }
    }
    /// <summary>
    /// 添加数据
    /// </summary>
    /// <param name="mySqlCommand"></param>
    public static void getInsert(MySqlCommand mySqlCommand)
    {
        try
        {
            mySqlCommand.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            String message = ex.Message;
            Console.WriteLine("插入数据失败了!" + message);
        }
      
    }
    /// <summary>
    /// 修改数据
    /// </summary>
    /// <param name="mySqlCommand"></param>
    public static void getUpdate(MySqlCommand mySqlCommand)
    {
        try
        {
            mySqlCommand.ExecuteNonQuery();
        }
        catch (Exception ex)
        {

            String message = ex.Message;
            Console.WriteLine("修改数据失败了!" + message);
        }
    }
    /// <summary>
    /// 删除数据
    /// </summary>
    /// <param name="mySqlCommand"></param>
    public static void getDel(MySqlCommand mySqlCommand)
    {
        try
        {
            mySqlCommand.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            String message = ex.Message;
            Console.WriteLine("删除数据失败了!" + message);
        }
    }
}


<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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值