Comment écrire des procédures stockées et des fonctions personnalisées dans MySQL à l'aide de C#
Introduction :
MySQL est un système de gestion de base de données open source largement utilisé, tandis que C# est un langage de programmation orienté objet couramment utilisé. Au cours du processus de développement, nous devons souvent utiliser des procédures et des fonctions stockées dans une base de données pour améliorer la réutilisabilité et les performances du code. Cet article explique comment utiliser C# pour écrire des procédures stockées et des fonctions personnalisées dans une base de données MySQL et fournit des exemples de code spécifiques.
1. Procédures stockées
Une procédure stockée est un ensemble d'instructions SQL qui effectuent des tâches spécifiques. Ce qui suit présentera en détail comment écrire des procédures stockées personnalisées dans MySQL en utilisant C#.
1.1 Créer une procédure stockée
Tout d'abord, créez une nouvelle base de données dans MySQL et créez une table de données nommée "TestDB". La structure de la table est la suivante :
CREATE TABLE TestTable
(TestTable
(
id
int(11) NOT NULL AUTO_INCREMENT,
name
varchar(100) DEFAULT NULL,
age
int(11) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
接下来,在Visual Studio中创建一个新的C#控制台应用程序。通过MySQL连接字符串连接到数据库,然后执行以下代码来创建一个名为"GetAllData"的存储过程:
using MySql.Data.MySqlClient;
namespace MySQLExample
{
class Program { static void Main(string[] args) { string connectionString = "server=localhost;username=root;password=password;database=TestDB"; MySqlConnection connection = new MySqlConnection(connectionString); MySqlCommand cmd = new MySqlCommand(); cmd.Connection = connection; cmd.CommandText = "CREATE PROCEDURE GetAllData() " + "BEGIN " + "SELECT * FROM TestTable; " + "END"; try { connection.Open(); cmd.ExecuteNonQuery(); Console.WriteLine("存储过程创建成功!"); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { connection.Close(); } Console.ReadKey(); } }
}
以上代码通过执行CREATE PROCEDURE语句来创建了一个名为"GetAllData"的存储过程。这个存储过程在数据库中可以直接调用,将返回TestTable表中的所有数据。
1.2 调用存储过程
接下来,我们来演示如何在C#中调用刚刚创建的存储过程。
在上一步骤的基础上,我们可以编写以下代码来调用存储过程并获取返回的数据:
using MySql.Data.MySqlClient;
namespace MySQLExample
{
class Program { static void Main(string[] args) { string connectionString = "server=localhost;username=root;password=password;database=TestDB"; MySqlConnection connection = new MySqlConnection(connectionString); MySqlCommand cmd = new MySqlCommand(); cmd.Connection = connection; cmd.CommandText = "GetAllData"; cmd.CommandType = CommandType.StoredProcedure; try { connection.Open(); MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader["id"].ToString() + " " + reader["name"].ToString() + " " + reader["age"].ToString()); } reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { connection.Close(); } Console.ReadKey(); } }
}
以上代码通过执行"GetAllData"存储过程来获取TestTable表中的所有数据,并将结果输出到控制台。
二、函数
函数是一个可重用的SQL代码块,它将输入参数的值计算后返回一个值。下面将详细介绍如何在MySQL中使用C#编写自定义函数。
2.1 创建函数
在MySQL中创建一个名为"GetAverageAge"的函数,它将计算TestTable表中所有人的平均年龄并返回。
创建函数的代码如下所示:
CREATE FUNCTION GetAverageAge
id
int(11) NOT NULL AUTO_INCREMENT,
name
varchar(100) DEFAULT NULL,
age
int(11) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
using MySql.Data.MySqlClient;
namespace MySQLExample
{class Program { static void Main(string[] args) { string connectionString = "server=localhost;username=root;password=password;database=TestDB"; MySqlConnection connection = new MySqlConnection(connectionString); try { connection.Open(); MySqlCommand cmd = new MySqlCommand("SELECT GetAverageAge()", connection); int averageAge = Convert.ToInt32(cmd.ExecuteScalar()); Console.WriteLine("平均年龄:" + averageAge); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { connection.Close(); } Console.ReadKey(); } }
Le code ci-dessus est exécuté par l'instruction CREATE PROCEDURE pour créer une procédure stockée nommée "GetAllData". Cette procédure stockée peut être appelée directement dans la base de données et renverra toutes les données de la table TestTable.
1.2 Appel de procédures stockées
Ensuite, montrons comment appeler la procédure stockée qui vient d'être créée en C#.
Sur la base de l'étape précédente, nous pouvons écrire le code suivant pour appeler la procédure stockée et obtenir les données renvoyées :
GetAverageAge
() RETURNS INT(11)🎜BEGIN🎜DECLARE avg_age INT(11);🎜SELECT AVG(age) INTO avg_age FROM TestTable; 🎜RETURN avg_age;🎜END🎜🎜2.2 Appelez la fonction🎜Utilisez le code suivant pour appeler la fonction qui vient d'être créée et obtenez la valeur renvoyée :🎜🎜en utilisant MySql.Data.MySqlClient;🎜🎜namespace MySQLExample🎜{🎜rrreee🎜} 🎜🎜Le code ci-dessus Appelez la fonction "GetAverageAge" en exécutant l'instruction SELECT GetAverageAge() et obtenez l'âge moyen renvoyé par la fonction. 🎜🎜Conclusion : 🎜Cet article explique comment écrire des procédures stockées et des fonctions personnalisées dans MySQL à l'aide de C# et fournit des exemples de code spécifiques. Les procédures et fonctions stockées peuvent améliorer la réutilisabilité et les performances du code et conviennent à divers besoins complexes de traitement de données. En utilisant C# pour nous connecter à la base de données MySQL, nous pouvons écrire et appeler de manière flexible des procédures et des fonctions stockées, tirant ainsi pleinement parti des avantages de la base de données MySQL. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!