当我们使用C#与MySQL打交道时,使用存储过程可以提高代码重用性和安全性,同时可以减少代码维护成本。下面将介绍C#中调用MySQL存储过程的方法,不仅解释了如何使用存储过程,还提供了两个示例说明。
步骤1:建立MySQL存储过程
首先在MySQL数据库中建立存储过程。
示例:
假设我们有一张students表,该表中包含以下列:id、name和age。我们可以编写一个存储过程SELECT_ALL_STUDENTS,以获取所有学生的信息。以下是存储过程代码:
CREATE PROCEDURE SELECT_ALL_STUDENTS()
BEGIN
SELECT id, name, age FROM students;
END
步骤2:创建C#应用程序
接下来我们创建一个C#应用程序,连接到数据库并调用存储过程。
using MySql.Data.MySqlClient;
using System;
using System.Data;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
string connString = "SERVER=localhost;PORT=3306;UID=root;PWD=password;DATABASE=test";
using (MySqlConnection conn = new MySqlConnection(connString))
{
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SELECT_ALL_STUDENTS";
conn.Open();
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader["id"] + " - " + reader["name"] + " - " + reader["age"] );
}
}
}
}
Console.ReadLine();
}
}
}
示例1:C#调用MySQL存储过程,获取所有的学生信息
在这个示例中,我们连接到MySQL数据库并调用SELECT_ALL_STUDENTS存储过程来获取所有学生的信息。在这个例子中,我们使用带有MySqlDataReader的ExecuteReader方法来读取学生信息,并在控制台中打印它。
示例2:C#调用MySQL存储过程,插入一条数据
在这个示例中,我们创建一个存储过程INSERT_STUDENT,并将一条新的学生信息插入数据库的students表中。以下是INSERT_STUDENT过程:
CREATE PROCEDURE `INSERT_STUDENT`(IN p_name VARCHAR(50), IN p_age INT)
BEGIN
INSERT INTO students (name, age) VALUES (p_name, p_age);
END
要调用这个存储过程并插入一条新的学生数据,请执行以下C#代码:
using MySql.Data.MySqlClient;
using System;
using System.Data;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
string connString = "SERVER=localhost;PORT=3306;UID=root;PWD=password;DATABASE=test";
using (MySqlConnection conn = new MySqlConnection(connString))
{
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "INSERT_STUDENT";
cmd.Parameters.AddWithValue("@p_name", "John");
cmd.Parameters.AddWithValue("@p_age", 25);
conn.Open();
int rowsAffected = cmd.ExecuteNonQuery();
Console.WriteLine("Rows Affected: " + rowsAffected);
}
}
Console.ReadLine();
}
}
}
在这个例子中,我们使用带有MySqlCommand的ExecuteNonQuery方法来执行INSERT_STUDENT过程,并使用参数p_name和p_age来传递学生的姓名和年龄。注意,我们必须调用AddWithValue来指定输入参数的值。最后,我们将控制台中的受影响行数打印出来,以确保新学生数据被成功插入。
在以上两个示例中,我们演示了如何使用C#调用MySQL存储过程。无论您是想执行查询语句还是插入数据,存储过程都可以帮助您实现这些功能。从代码重用性、安全性和维护方面考虑,使用存储过程是推荐的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中调用MySQL存储过程的方法 - Python技术站