📅  最后修改于: 2023-12-03 15:40:21.166000             🧑  作者: Mango
在编写 C# 应用程序时,经常需要从 MySQL 数据库中读取数据。当需要获取多个表中的数据时,要么进行多次查询,要么使用 JOIN 操作。这篇文章介绍如何使用 C# MySQL 数据读取器从两个表中读取数据。
在开始之前,您需要完成以下步骤:
安装 MySQL 数据库,并创建两个表。这里使用 users
和 orders
两个表作为例子。
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL
);
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT NOT NULL,
product VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);
安装 MySQL Connector/NET。可以使用 NuGet 包管理器来安装。
Install-Package MySql.Data
下面的代码片段演示了如何创建 MySQL 数据读取器并从两个表中读取数据。首先,创建一个 MySQLConnection 对象来连接 MySQL 数据库。然后使用 SQL 语句查询两个表,使用 INNER JOIN 将它们连接起来。
using System;
using MySql.Data.MySqlClient;
class Program
{
static void Main(string[] args)
{
string connectionString = "server=localhost;user=root;database=test;password=1234";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string sql = @"
SELECT users.*, orders.product, orders.price
FROM users
INNER JOIN orders
ON users.id = orders.user_id
";
MySqlCommand command = new MySqlCommand(sql, connection);
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
int id = reader.GetInt32("id");
string name = reader.GetString("name");
string email = reader.GetString("email");
decimal price = reader.GetDecimal("price");
string product = reader.GetString("product");
Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}", id, name, email, product, price);
}
reader.Close();
connection.Close();
}
}
string connectionString = "server=localhost;user=root;database=test;password=1234";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
在这里,我们使用连接字符串创建了一个 MySqlConnection 对象,并打开连接。这里的连接字符串包括以下信息:
string sql = @"
SELECT users.*, orders.product, orders.price
FROM users
INNER JOIN orders
ON users.id = orders.user_id
";
MySqlCommand command = new MySqlCommand(sql, connection);
MySqlDataReader reader = command.ExecuteReader();
这里的 SQL 语句使用 INNER JOIN 将 users 表和 orders 表连接起来。使用 SELECT 子句选择要返回的列。请注意,我们使用了 users.*
来表示 users 表的所有列。
然后,我们创建了 MySqlCommand 对象,并将 SQL 语句和连接对象传递给它。最后,调用 ExecuteReader 方法执行查询,并将结果存储在 MySqlDataReader 对象中。
while (reader.Read())
{
int id = reader.GetInt32("id");
string name = reader.GetString("name");
string email = reader.GetString("email");
decimal price = reader.GetDecimal("price");
string product = reader.GetString("product");
Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}", id, name, email, product, price);
}
使用 while 循环遍历 MySqlDataReader 对象中的记录,并使用 GetString 和 GetInt32 等方法访问记录中的每个列。
注意,我们使用列名作为参数来调用这些方法。这里的列名必须与 SQL 语句中的列名相同。
这篇文章介绍了如何使用 C# MySQL 数据读取器从两个表中读取数据。我们创建了一个 MySqlConnection 对象来连接 MySQL 数据库,并使用 MySqlDataReader 对象来读取数据。我们使用 INNER JOIN 连接两个表,并在 SELECT 子句中选择要返回的列。如果您需要从多个表中读取数据,请使用类似的 SQL 语句。