zoukankan      html  css  js  c++  java
  • c#连接MySQL数据库

    本文简单介绍连接过程,代码只列出核心部分

    1、安装MySQL

    首先确保安装了MySQL,并可以正常使用

    如果没有,请参考:MySQL的安装

    2、引入数据库连接驱动

    在项目中引入 MySql.Data.dll

    如果没有该文件,下载Connector/NET包,地址:https://dev.mysql.com/downloads/connector/net/,注意对应MySQL版本

    安装后,在安装目录找到 MySql.Data.dll 引入

    3、dbhelper

        public string getDBdata(string sql)
        {
            System.Data.DataSet ds = new System.Data.DataSet();
            string connStr = @"Database=ent;Data Source=localhost;User Id=root;Password=123456"; 
            try
            {
                using (MySql.Data.MySqlClient.MySqlDataAdapter dataAapter = new MySql.Data.MySqlClient.MySqlDataAdapter(sql, connStr))
                {
                    dataAapter.Fill(ds);
                    return DatasetToJson(ds);
                }
            }
            catch (Exception e)
            {
                return e.Message.ToString();
            }
        }

    用到的 dataset 转json代码参考:

        /// <summary> 
        /// DataSet转换成Json格式 
        /// </summary> 
        /// <paramname="ds">DataSet</param> 
        ///<returns></returns> 
        public static string DatasetToJson(DataSet ds, int total = -1)
        {
            StringBuilder json = new StringBuilder();
    
            foreach (DataTable dt in ds.Tables)
            { 
                json.Append("{"total":");
                if (total == -1)
                {
                    json.Append(dt.Rows.Count);
                }
                else
                {
                    json.Append(total);
                }
                json.Append(","rows":[");
                json.Append(DataTableToJson(dt));
                json.Append("]}");
            }
            return json.ToString();
        }
    
    
    
        /// <summary> 
        /// dataTable转换成Json格式 
        /// </summary> 
        /// <paramname="dt"></param> 
        ///<returns></returns> 
        public static string DataTableToJson(DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();
    
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append(""");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("":"");
                    jsonBuilder.Append(dt.Rows[i][j].ToString());
                    jsonBuilder.Append("",");
                }
                if (dt.Columns.Count > 0)
                {
                    jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                }
                jsonBuilder.Append("},");
            }
            if (dt.Rows.Count > 0)
            {
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            }
    
            return jsonBuilder.ToString();
        }

    4、常见错误

    Client does not support authentication protocol requested by server; consider upgrading MySQL client

    登陆mysql

    mysql -u root -p
    #接着输入你的密码

    执行解决:

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
    SELECT plugin FROM mysql.user WHERE User = 'root'; 

    给定关键字不在字典中。

    这个错误一般是由于 MySql.Data.dll 版本不对应导致,重新下载引入即可

  • 相关阅读:
    如何用vue组件做个机器人?有趣味的代码
    vue--监听属性完成大小写字母间的转换
    C语言基础:进制转换,变量,常量,表达式,基本数据类型,输出函数,输入函数,运算符. 分类: iOS学习 c语言基础 2015-06-10 21:39 25人阅读 评论(0) 收藏
    2019年最新50道java基础部分面试题
    28道java基础面试题-下
    最新28道java基础面试题-上
    后台管理UI模板
    Bellman-Ford 算法及其优化
    【枚举Day1】20170529-2枚举算法专题练习 题解
    【枚举Day1】20170529-2枚举算法专题练习 题目
  • 原文地址:https://www.cnblogs.com/fanlu/p/11024163.html
Copyright © 2011-2022 走看看