65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C# 和 .NET 连接 MySQL 数据库

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.81/5 (13投票s)

2010 年 4 月 7 日

CPOL

2分钟阅读

viewsIcon

325376

本文档展示了如何使用 MySQL Connector for .NET 连接 MySQL 数据库。

Connecting to MySQL database using C# and .Net

引言

本文档展示了如何使用 MySQL Connector for .NET 连接 MySQL 数据库。我还会向您展示如何使用 C# 更新 MySQL 数据库记录。

运行示例的前提条件

  • Visual Studio 2005 或 Visual Studio 2008
  • MySQL 数据库已安装在您的本地机器或远程主机上
  • MySQL 数据库管理工具,允许您创建数据库并运行 SQL 语句。我使用的是 phpMyAdmin,这是一个 Web 界面。

入门

  • 前往 MySQL 管理工具,并创建一个新的数据库,命名为 inventorydb
  • 从以下链接下载 MySQL 脚本。这是一个 .sql 文件。它包含 items 表结构和数据。
    下载 MySQL 脚本文件

    使用 MySQL 管理工具打开此文件,或将此文件中的 SQL 语法复制粘贴到 MySQL 管理工具中。运行它,它应该在 inventorydb 数据库中创建 items 表。

    Connecting to MySQL database using C# and .Net
  • 对于 Visual Studio,您需要安装 MySQL Connector for .NET,这本质上是一个 .NET 库,用于支持 .NET 中的 MySQL 数据库连接。前往以下链接下载连接器并安装它。

    https://dev.mysqlserver.cn/downloads/connector/net

    安装连接器时,请确保在安装前关闭 Visual Studio。

  • 成功在您的计算机上安装 MySQL 连接器后,从以下链接下载示例,并将其提取到某个文件夹中。

    下载示例

  • 使用 Visual Studio 打开示例解决方案文件。
  • 在解决方案资源管理器中,打开 App.Config 文件,并更改连接字符串,使其指向您之前创建的 MySQL 数据库。根据您的数据库实例,更改数据库用户名和密码。

    Connection String

  • 运行示例,它应该在网格中向您显示项目列表。您可以从此列表中更新、插入或删除项目。

源代码说明

此示例的源代码非常简单明了。

  • 使用以下代码初始化 mysql 连接
    //Initialize mysql connection
    connection = new MySqlConnection(ConnectionString);
    
    //Get all items in datatable
    DTItems = GetAllItems();
  • GetAllItems() 函数从数据库表中返回所有项目
    //Get all items from database into datatable
      DataTable GetAllItems()
      {
        try
          {
            //prepare query to get all records from items table
            string query = "select * from items";
            //prepare adapter to run query
            adapter = new MySqlDataAdapter(query, connection);
            DataSet DS = new DataSet();
            //get query results in dataset
            adapter.Fill(DS);
    .
    .
    .
            //return datatable with all records
            return DS.Tables[0];
      }
  • 检索到数据表中的所有项目后,使用数据表填充网格视图
     dataGridView1.DataSource = DTItems;
  • 初始化数据集时,使用适配器设置 updateinsert delete 命令。
    .
    .
    .
    // Set the UPDATE command and parameters.
    adapter.UpdateCommand = new MySqlCommand(
      "UPDATE items SET ItemName=@ItemName, Price=@Price, _
    	AvailableQuantity=@AvailableQuantity, Updated_Dt=NOW() _
    	WHERE ItemNumber=@ItemNumber;",connection);
    adapter.UpdateCommand.Parameters.Add("@ItemNumber", _
    	MySqlDbType.Int16, 4, "ItemNumber");
    adapter.UpdateCommand.Parameters.Add_
    	("@ItemName", MySqlDbType.VarChar, 100, "ItemName");
    adapter.UpdateCommand.Parameters.Add_
    	("@Price", MySqlDbType.Decimal, 10, "Price");
    adapter.UpdateCommand.Parameters.Add_
    	("@AvailableQuantity", MySqlDbType.Int16, 11, "AvailableQuantity");
    adapter.UpdateCommand.UpdatedRowSource = UpdateRowSource.None;
    
    // Set the INSERT command and parameter.
    adapter.InsertCommand = new MySqlCommand(
        "INSERT INTO items VALUES (@ItemNumber,@ItemName,_
    	@Price,@AvailableQuantity,NOW());",connection);
    adapter.InsertCommand.Parameters.Add("@ItemNumber", _
    	MySqlDbType.Int16, 4, "ItemNumber");
    adapter.InsertCommand.Parameters.Add("@ItemName", _
    	MySqlDbType.VarChar, 100, "ItemName");
    adapter.InsertCommand.Parameters.Add("@Price", _
    	MySqlDbType.Decimal, 10, "Price");
    adapter.InsertCommand.Parameters.Add_
    	("@AvailableQuantity", MySqlDbType.Int16, 11, "AvailableQuantity");
    adapter.InsertCommand.UpdatedRowSource = UpdateRowSource.None;
    
    // Set the DELETE command and parameter.
    adapter.DeleteCommand = new MySqlCommand(
       "DELETE FROM items " + "WHERE ItemNumber=@ItemNumber;", connection);
    adapter.DeleteCommand.Parameters.Add("@ItemNumber", _
    	MySqlDbType.Int16, 4, "ItemNumber");
    adapter.DeleteCommand.UpdatedRowSource = UpdateRowSource.None;
    .
    .
    .
  • 单击“保存”按钮时,我们需要更新适配器以保存记录。请注意,当适配器更新时,将根据您在网格中执行的操作,对数据库执行相应的命令(insertupdate delete)。
    private void btnSave_Click(object sender, EventArgs e)
    {
        try
        {
          //Save records in database using DTItems which is datasource for Grid
          adapter.Update(DTItems);
    .
    .
    .
  • 单击“删除”按钮时,我们需要从数据表中删除行。之后,更新适配器以保存记录。
    private void btnDelete_Click(object sender, EventArgs e)
    {
      if (dataGridView1.SelectedRows.Count > 0)
      {
         //Delete a row from grid first.
         dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);
    
         //Save records again. This will delete record from database.
         adapter.Update(DTItems);
    .
    .
    .

历史

  • 2010 年 4 月 7 日:初始发布
© . All rights reserved.