C を使用して MySQL でカスタム ストアド プロシージャと関数を作成する方法
#はじめに:
MySQL は広く使用されているオープン ソース データベース管理システムであり、C# は一般的に使用されるオブジェクト指向プログラミング言語。開発プロセスでは、コードの再利用性とパフォーマンスを向上させるために、データベースのストアド プロシージャや関数を使用する必要がよくあります。この記事では、C# を使用して MySQL データベースにカスタム ストアド プロシージャと関数を作成する方法を紹介し、具体的なコード例を示します。
1. ストアド プロシージャ
ストアド プロシージャは、特定のタスクを実行する一連の SQL ステートメントです。 C#を使用してMySQLにカスタムストアドプロシージャを記述する方法を詳しく紹介します。
1.1 ストアド プロシージャを作成する
まず、MySQL に新しいデータベースを作成し、「TestDB」という名前のデータ テーブルを作成します。テーブル構造は次のとおりです。
CREATE TABLE TestTable
(
id
int(11) NOT NULL AUTO_INCREMENT,
name
varchar(100) DEFAULT NULL,
age
int(11) DEFAULT NULL,
主キー (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 テーブル内のすべてのデータを取得し、結果をコンソールに出力します。
2. 関数
関数は、入力パラメーターの値を計算して値を返す再利用可能な SQL コード ブロックです。 C#を使用してMySQLにカスタム関数を記述する方法を詳しく紹介します。
2.1 関数の作成
MySQL で「GetAverageAge」という名前の関数を作成します。この関数は、TestTable テーブル内のすべての人の平均年齢を計算して返します。
関数を作成するコードは次のとおりです。
CREATE FUNCTION GetAverageAge
() RETURNS INT(11)
BEGIN
DECLARE avg_age INT(11) );
SELECT AVG(age) INTO avg_age FROM TestTable;
RETURN avg_age;
END
2.2 関数の呼び出し
次のコードを使用して、作成した関数を呼び出して取得します。戻り値:
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(); } }
}
上記のコードは、実行すると呼び出されます。 SELECT GetAverageAge() ステートメントの「GetAverageAge」関数を使用し、関数によって返される平均年齢を取得します。
結論:
この記事では、C# を使用して MySQL でカスタム ストアド プロシージャと関数を作成する方法を紹介し、具体的なコード例を示します。ストアド プロシージャとストアド関数は、コードの再利用性とパフォーマンスを向上させることができ、さまざまな複雑なデータ処理のニーズに適しています。 C# を使用して MySQL データベースに接続すると、ストアド プロシージャや関数を柔軟に作成および呼び出しできるため、MySQL データベースの利点を最大限に発揮できます。
以上がC# を使用して MySQL でカスタム ストアド プロシージャと関数を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。