zoukankan      html  css  js  c++  java
  • 3.ASP.NET 使用 MySQL

     

    C#与MySQL的交互, 先添加MySQL.Data.dll(位于MySQL安装目录下的Connector NET 8.0Assemblies${version}目录下)引用, 之后代码中使用步骤如下(SELECT未使用预处理)

    Web.config 中定义 MySqlConstructorString字符串, 用于配置数据库连接
    <add key="MySqlConstructorString" value="Server=localhost;User Id=root;Password=myPassword;PersistSecurityInfo=True;Port=3306;DataBase=DemoDataBase;Charset=utf8mb4;SslMode=none" />

    使用的代码:

    using System.Web.Mvc;
    using MySql.Data.MySqlClient;
     
    namespace WebDemo.Controllers
    {
        public class DemoController : Controller
        {
            public string ExecuteSQL()
            {
                MySqlConnection mySqlConnection = new MySqlConnection(System.Configuration.ConfigurationManager.AppSettings["MySqlConstructorString"]);
                mySqlConnection.Open();
                // 使用预处理的占位符, 参数2传入了 MySqlConnection 对象
                MySqlCommand mySqlCommand = new MySqlCommand(
                    "INSERT INTO `DemoTable` (`row_id`, `title`, `author`, `introduction`, `create_date`) VALUES (UUID(), ?title, ?author, ?introduction, ?createDate);",
                    mySqlConnection);
     
                // 创建预处理信息
                MySqlParameter titleParameter = new MySqlParameter("?title", MySqlDbType.VarChar, 50);
                MySqlParameter authorParameter = new MySqlParameter("?author", MySqlDbType.VarChar, 30);
                MySqlParameter introductionParameter = new MySqlParameter("?introduction", MySqlDbType.VarChar, 1000);
                MySqlParameter createDateParameter = new MySqlParameter("?createDate", MySqlDbType.Date);
     
                // 绑定数据
                titleParameter.Value = "少有人走的路";
                authorParameter.Value = "派克";
                introductionParameter.Value = "心智成熟之旅";
                createDateParameter.Value = "2018-06-20";
     
                // 添加绑定
                mySqlCommand.Parameters.Add(titleParameter);
                mySqlCommand.Parameters.Add(authorParameter);
                mySqlCommand.Parameters.Add(introductionParameter);
                mySqlCommand.Parameters.Add(createDateParameter);
     
                // 预处理
                mySqlCommand.Prepare();
     
                // MySqlCommand 的 ExecuteNonQuery 方法
                string executeResult = mySqlCommand.ExecuteNonQuery() > 0 ? "执行成功" : "执行失败";
     
                // 多次执行, 无需重复绑定与预处理, 直接替换数据即可
                titleParameter.Value = "穷爸爸富爸爸";
                authorParameter.Value = "清崎";
                introductionParameter.Value = "资产与负债";
                createDateParameter.Value = "2018-06-20";
                executeResult += " | " + (mySqlCommand.ExecuteNonQuery() > 0 ? "执行成功" : "执行失败");
     
                // 记得关闭资源
                mySqlConnection.Close();
                return executeResult;
            }
     
            public string QueryFromDB()
            {
                MySqlConnection mySqlConnection = new MySqlConnection(System.Configuration.ConfigurationManager.AppSettings["MySqlConstructorString"]);
                mySqlConnection.Open();
                MySqlCommand mySqlCommand = new MySqlCommand(
                    "SELECT `title`, `author`, `introduction` FROM DemoTable;",
                    mySqlConnection);
                // SELECT 与 INSERT, DELECT, UPDATE 的不同之处
                MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
                string displayString = "";
                // MySqlDataReader 的 Read() 方法用于将 MySqlDataReader 移动到下一个记录, 需要注意使用第一行记录前也需要先 Read()
                while (mySqlDataReader.Read())
                {
                    // 使用索引符来访问数据
                    displayString += "Book Name: " + mySqlDataReader[0] + "   Author: " + mySqlDataReader[1] + "   Introduction: " + mySqlDataReader[2] + "<br/><br/>";
                }
                // 关闭资源
                mySqlDataReader.Close();
                mySqlConnection.Close();
                return displayString;
            }
        }
    }
  • 相关阅读:
    多线程环境下调用 HttpWebRequest 并发连接限制
    i—比 i++ 快?
    文件在不同文件系统间拷贝文件时间改变的问题
    Go websocket 聊天室demo2
    Go websocket 聊天室demo以及k8s 部署
    AcWing 1077. 皇宫看守
    AcWing 1073. 树的中心
    AcWing 1085. 不要62
    AcWing 1081 度的数量
    AcWing 1082. 数字游戏
  • 原文地址:https://www.cnblogs.com/yuyangbk/p/12272149.html
Copyright © 2011-2022 走看看