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


引言
本文档展示了如何使用 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
表。 - 对于 Visual Studio,您需要安装 MySQL Connector for .NET,这本质上是一个 .NET 库,用于支持 .NET 中的 MySQL 数据库连接。前往以下链接下载连接器并安装它。
https://dev.mysqlserver.cn/downloads/connector/net
安装连接器时,请确保在安装前关闭 Visual Studio。
- 成功在您的计算机上安装 MySQL 连接器后,从以下链接下载示例,并将其提取到某个文件夹中。
- 使用 Visual Studio 打开示例解决方案文件。
- 在解决方案资源管理器中,打开 App.Config 文件,并更改连接字符串,使其指向您之前创建的 MySQL 数据库。根据您的数据库实例,更改数据库用户名和密码。
- 运行示例,它应该在网格中向您显示项目列表。您可以从此列表中更新、插入或删除项目。
源代码说明
此示例的源代码非常简单明了。
- 使用以下代码初始化 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;
- 初始化数据集时,使用适配器设置
update
、insert
和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; . . .
- 单击“保存”按钮时,我们需要更新适配器以保存记录。请注意,当适配器更新时,将根据您在网格中执行的操作,对数据库执行相应的命令(
insert
、update
或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 日:初始发布