Heim >Datenbank >MySQL-Tutorial >So schreiben Sie benutzerdefinierte gespeicherte Prozeduren und Funktionen in MySQL mit C#
So schreiben Sie benutzerdefinierte gespeicherte Prozeduren und Funktionen in MySQL mit C#
Einführung:
MySQL ist ein weit verbreitetes Open-Source-Datenbankverwaltungssystem, während C# eine häufig verwendete objektorientierte Programmiersprache ist. Während des Entwicklungsprozesses müssen wir häufig in Datenbanken gespeicherte Prozeduren und Funktionen verwenden, um die Wiederverwendbarkeit und Leistung des Codes zu verbessern. In diesem Artikel wird erläutert, wie Sie mit C# benutzerdefinierte gespeicherte Prozeduren und Funktionen in einer MySQL-Datenbank schreiben, und es werden spezifische Codebeispiele bereitgestellt.
1. Gespeicherte Prozeduren
Eine gespeicherte Prozedur ist eine Reihe von SQL-Anweisungen, die bestimmte Aufgaben ausführen. Im Folgenden wird detailliert beschrieben, wie Sie mit C# benutzerdefinierte gespeicherte Prozeduren in MySQL schreiben.
1.1 Erstellen Sie eine gespeicherte Prozedur
Erstellen Sie zunächst eine neue Datenbank in MySQL und erstellen Sie eine Datentabelle mit dem Namen „TestDB“. Die Tabellenstruktur ist wie folgt:
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(); } }
Der obige Code wird von der CREATE PROCEDURE-Anweisung ausgeführt, um eine gespeicherte Prozedur mit dem Namen „GetAllData“ zu erstellen. Diese gespeicherte Prozedur kann direkt in der Datenbank aufgerufen werden und gibt alle Daten in der TestTable-Tabelle zurück.
1.2 Gespeicherte Prozeduren aufrufen
Als nächstes zeigen wir, wie man die gerade erstellte gespeicherte Prozedur in C# aufruft.
Basierend auf dem vorherigen Schritt können wir den folgenden Code schreiben, um die gespeicherte Prozedur aufzurufen und die zurückgegebenen Daten abzurufen:
GetAverageAge
() RETURNS INT(11)🎜BEGIN🎜DECLARE avg_age INT(11);🎜SELECT AVG(age) INTO avg_age FROM TestTable; 🎜RETURN avg_age;🎜END🎜🎜2.2 Rufen Sie die Funktion auf🎜Verwenden Sie den folgenden Code, um die gerade erstellte Funktion aufzurufen und den zurückgegebenen Wert zu erhalten:🎜🎜using MySql.Data.MySqlClient;🎜🎜namespace MySQLExample🎜{🎜rrreee🎜} 🎜🎜Der obige Code ruft die Funktion „GetAverageAge“ auf, indem Sie die Anweisung SELECT GetAverageAge() ausführen und das von der Funktion zurückgegebene Durchschnittsalter erhalten. 🎜🎜Fazit: 🎜Dieser Artikel erklärt, wie man benutzerdefinierte gespeicherte Prozeduren und Funktionen in MySQL mit C# schreibt und stellt spezifische Codebeispiele bereit. Gespeicherte Prozeduren und Funktionen können die Wiederverwendbarkeit und Leistung von Code verbessern und eignen sich für verschiedene komplexe Datenverarbeitungsanforderungen. Durch die Verwendung von C# zur Verbindung mit der MySQL-Datenbank können wir gespeicherte Prozeduren und Funktionen flexibel schreiben und aufrufen und so die Vorteile der MySQL-Datenbank voll ausschöpfen. 🎜Das obige ist der detaillierte Inhalt vonSo schreiben Sie benutzerdefinierte gespeicherte Prozeduren und Funktionen in MySQL mit C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!