1. 引入MySQL驱动
在使用.NET调用MySQL存储过程之前,首先需要确保已经将MySQL的.NET驱动程序安装到项目中。常见的MySQL.NET驱动有MySql.Data和MySqlConnector。
using MySql.Data.MySqlClient;
或者
using MySqlConnector;
2. 连接字符串配置
连接字符串是连接到MySQL数据库的关键。以下是连接字符串的格式:
string connectionString = "server=数据库地址;port=端口号;database=数据库名;user id=用户名;password=密码;";
确保替换为你自己的数据库信息。
3. 创建连接对象
使用连接字符串创建MySqlConnection对象。
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
// ...
}
或者
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
// ...
}
4. 打开数据库连接
在使用存储过程之前,确保数据库连接已打开。
connection.Open();
5. 创建存储过程调用命令
使用MySqlCommand对象来创建存储过程调用命令。
using (MySqlCommand command = new MySqlCommand("存储过程名称", connection))
{
command.CommandType = CommandType.StoredProcedure;
// ...
}
确保将存储过程名称替换为实际的存储过程名称。
6. 添加存储过程参数
如果你需要向存储过程传递参数,可以使用MySqlParameter类。
MySqlParameter param1 = new MySqlParameter("@参数1", MySqlDbType.VarChar);
param1.Value = "参数值";
command.Parameters.Add(param1);
确保替换@参数1和参数值为你自己的参数名和值。
7. 执行存储过程
使用ExecuteNonQuery方法来执行存储过程。
command.ExecuteNonQuery();
如果存储过程返回结果集,则使用ExecuteReader方法。
using (MySqlDataReader reader = command.ExecuteReader())
{
// ...
}
8. 关闭数据库连接
执行完毕后,确保关闭数据库连接。
connection.Close();
9. 注意事项
- 确保存储过程的权限已授予连接到数据库的用户。
- 如果存储过程有多个返回值,需要使用
OutputParameter来获取它们。 - 当使用
MySqlConnection和MySqlCommand时,应始终使用using语句,以确保资源被正确释放。
示例代码
以下是一个使用MySql.Data.MySqlClient驱动调用MySQL存储过程的示例:
using System;
using MySql.Data.MySqlClient;
class Program
{
static void Main()
{
string connectionString = "server=localhost;port=3306;database=mydb;user id=root;password=root;";
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
using (MySqlCommand command = new MySqlCommand("GetUsers", connection))
{
command.CommandType = CommandType.StoredProcedure;
MySqlParameter param1 = new MySqlParameter("@userId", MySqlDbType.Int32);
param1.Value = 1;
command.Parameters.Add(param1);
using (MySqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader["name"].ToString());
}
}
}
connection.Close();
}
}
}
在这个示例中,我们调用名为GetUsers的存储过程,该存储过程返回与@userId参数相对应的用户信息。