【C#】使用MySql.Data.dll连接MySQL数据库

准备工作

在Visual Studio中新建一个C#的控制台应用程序。

确保后台已经启用了MySQL57服务。

在MySQL的安装路径下找到DLL,默认位置是 C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.dll 。

更多写代码连接MySQL的方法(通过MySQLConnector连接器),参考文档 C:\Program Files (x86)\MySQL\Connector.NET 6.9\Documentation\ConnectorNET.chm 。在文档的Users Guide-Programming中有代码案例。

把MySql.Data.dll引入项目中。v4.5表示.NetFramework框架的版本号,一定要保证使用的DLL与项目的.NetFramework版本一致,否则运行时报错找不到DLL,报错如下:

1>F:\Learning\CSharpConnectMySQL\CSharpConnectMySQL\Program.cs(1,7,1,12): error CS0246: The type or namespace name 'MySql' could not be found (are you missing a using directive or an assembly reference?)

 


 测试增删改查

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

namespace CSharpConnectMySQL
{
    class Program
    {
        static void Main(string[] args)
        {
            // 服务器地址;端口号;数据库;用户名;密码
            string connectStr = "server=127.0.0.1;port=3306;database=mygamedb;user=root;password=root"; // 用户名和密码在MySQL定义的
            // 创建连接
            MySqlConnection conn = new MySqlConnection(connectStr);

            try
            {
                // 打开连接
                conn.Open();
                Console.WriteLine("已经建立连接");

                //Query(conn);  // 测试查询
                //Insert(conn); // 测试插入
                //Update(conn); // 测试更新
                //Delete(conn); // 测试删除
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            finally
            {
                // 关闭连接
                conn.Close();
                Console.WriteLine("数据库已关闭");
            }

            Console.ReadKey();
        }

        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="conn"></param>
        private static void Query(MySqlConnection conn)
        {
            // 创建命令
            string sql = "select * from users";
            MySqlCommand cmd = new MySqlCommand(sql, conn);
            // 读取数据
            MySqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read()) // true表示能读取该行数据
            {         
         // 方式一:访问数组

         Console.WriteLine(reader[
0].ToString() + reader[1].ToString()); // reader[0]是读出来的第一列属性
                // 方式二:根据列数
        
Console.WriteLine(reader.GetInt32(0));
                // 方式三:根据列名
         Console.WriteLine(reader.GetInt32("user_id")); } }
/// <summary> /// 插入,增加数据 /// </summary> /// <param name="conn"></param> private static void Insert(MySqlConnection conn) { // 创建命令 string sql = "insert into user(user_name, user_pwd) values('asdAa','2345')"; MySqlCommand cmd = new MySqlCommand(sql, conn); // 添加一条记录 int result = cmd.ExecuteNonQuery(); Console.WriteLine("数据库中受影响的行数 = " + result); } /// <summary> /// 更新,改数据 /// </summary> /// <param name="conn"></param> private static void Update(MySqlConnection conn) { // 创建命令 string sql = "update user set user_name = 'newName', user_pwd = '66777' where user_id = '3'"; MySqlCommand cmd = new MySqlCommand(sql, conn); // 更新记录 int result = cmd.ExecuteNonQuery(); Console.WriteLine("数据库中受影响的行数 = " + result); } /// <summary> /// 删除数据 /// </summary> /// <param name="conn"></param> private static void Delete(MySqlConnection conn) { // 创建命令 string sql = "delete from user where user_id = '4'"; MySqlCommand cmd = new MySqlCommand(sql, conn); // 删除记录 int result = cmd.ExecuteNonQuery(); Console.WriteLine("数据库中受影响的行数 = " + result); } } }

 


 

传参拼接SQL语句

        /// <summary>
        /// 验证用户名和密码
        /// </summary>
        /// <param name="conn"></param>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        private static bool Verify(MySqlConnection conn, string userName, string password)
        {
            // 方式一:组拼sql
            //string sql = "select * from user where user_name = '" + userName + "' and user_pwd = '" + password + "'";
            //MySqlCommand cmd = new MySqlCommand(sql, conn);

            // 方式二:参数标记
            string sql = "select * from user where user_name = @p1 and user_pwd = @p2";
            MySqlCommand cmd = new MySqlCommand(sql, conn);
            cmd.Parameters.AddWithValue("p1", userName); // 这里会根据输入的类型,自动判断要不要加单引号''
            cmd.Parameters.AddWithValue("p2", password);

            MySqlDataReader reader = cmd.ExecuteReader();
            if (reader.Read()) // 要么查出一条数据,要么0条。
            {
                return true;
            }

            return false;
        }

 

 

 

 

  

 

posted @ 2017-09-11 10:07  霍莉雪特  阅读(20710)  评论(0编辑  收藏  举报