CData ADO.NET Provider for MySQL とは?

CData ADO.NET Provider for MySQL は、.NET アプリケーションからリアルタイムの MySQL データに接続できる強力なツールです。ADO.NET Provider を使用すると、従来のデータベースにアクセスするのと同じように、MySQL Data Provider オブジェクトを使ってデータに接続・アクセスできます。Visual Studio Server Explorer から、コード内の使い慣れたクラスを通じて、また DataGridView、GridView、DataSet などのデータコントロールで MySQL Data Provider を活用できます。

この記事では、CData MySQL ADO.NET Provider の主要な機能を紹介します。ADO.NET Provider を使用して MySQL に接続する方法、特定のテーブルからデータをクエリする方法、MySQL のデータを更新する方法、ストアドプロシージャを実行する方法について解説します。

主要な機能

  • MySQL Server 5.0 以降への CRUD(作成、読み取り、更新、削除)接続を包括的にサポート。
  • ADO.NET Entity Framework(EF 5 & 6)、LINQ to Datasets などをサポート。
  • 32 ビットおよび 64 ビットオペレーティングシステムをサポート。
  • .NET Framework 4.0 以降および .NET Standard 2.0(.NET Core 2.1+、.NET 6.0)をサポート。
  • 標準の Visual Studio ウィザードを使用して MySQL にデータバインド。

MySQL への接続

CData ADO.NET Provider for MySQL は、以下の認証スキームを使用した MySQL への認証をサポートしています。

  • 標準(パスワード)
  • NT Lan Manager(NTLM)
  • LDAP
  • SSL
  • SSH
  • Azure
  • AWS

以下のセクションでは、パスワード認証スキームを使用して MySQL への接続を認証する例を紹介します。

C#

using (MySQLConnection connection = new MySQLConnection("User=myUser;Password=myPassword;Database=NorthWind;Server=myServer;Port=3306;")) { connection.Open(); }

VB.NET

Using connection As New MySQLConnection("User=myUser;Password=myPassword;Database=NorthWind;Server=myServer;Port=3306;") connection.Open End Using

CData MySQL ADO.NET Provider の認証スキームと接続プロパティの詳細については、CData ドキュメントページをご覧ください:CData MySQL ADO.NET Provider ドキュメント

ADO.NET Provider の使用方法

READ(読み取り)

以下のコード例では、MySQL に接続し、SELECT SQL クエリを実行して Orders テーブルの ShipName カラムと ShipCity カラムを取得します。

C#

string connectionString = "User=myUser;Password=myPassword;Database=NorthWind;Server=myServer;Port=3306;"; using (MySQLConnection connection = new MySQLConnection(connectionString)) { MySQLDataAdapter dataAdapter = new MySQLDataAdapter( "SELECT ShipName, ShipCity FROM `sakila`.Orders", connection); DataTable table = new DataTable(); dataAdapter.Fill(table); Console.WriteLine("Contents of Orders."); foreach (DataRow row in table.Rows) { Console.WriteLine("{0}: {1}", row["ShipName"], row["ShipCity"]); } }

VB.NET

Dim connectionString As String = "User=myUser;Password=myPassword;Database=NorthWind;Server=myServer;Port=3306;" Using connection As New MySQLConnection(connectionString) Dim dataAdapter As New MySQLDataAdapter("SELECT ShipName, ShipCity FROM `sakila`.Orders", connection) Dim table As New DataTable() dataAdapter.Fill(table) Console.WriteLine("Contents of Orders.") For Each row As DataRow In table.Rows Console.WriteLine("{0}: {1}", row("ShipName"), row("ShipCity")) Next End Using

WRITE(書き込み)

以下のコード例では、MySQL に接続し、UPDATE SQL ステートメントを実行して `sakila`.Orders エントリの ShipCity を更新します。

C#

string connectionString = "User=myUser;Password=myPassword;Database=NorthWind;Server=myServer;Port=3306;"; using (MySQLConnection connection = new MySQLConnection(connectionString)) { MySQLDataAdapter dataAdapter = new MySQLDataAdapter( "SELECT ShipName, ShipCity FROM `sakila`.Orders", connection); dataAdapter.UpdateCommand = new MySQLCommand( "UPDATE `sakila`.Orders SET ShipCity = @ShipCity " + "WHERE Id = @Id", connection); dataAdapter.UpdateCommand.Parameters.Add(new MySQLParameter("@ShipCity", "ShipCity", DbType.String )); dataAdapter.UpdateCommand.Parameters.Add(new MySQLParameter("@Id", "Id", DbType.String )); dataAdapter.UpdateCommand.Parameters[1].SourceVersion = DataRowVersion.Original; DataTable table = new DataTable(); dataAdapter.Fill(table); DataRow firstrow = table.Rows[0]; firstrow["ShipCity"] = "Raleigh"; dataAdapter.Update(table); Console.WriteLine("Rows after update."); foreach (DataRow row in table.Rows) { Console.WriteLine("{0}: {1}", row["ShipName"], row["ShipCity"]); } }

VB.NET

Dim connectionString As String = "User=myUser;Password=myPassword;Database=NorthWind;Server=myServer;Port=3306;" Using connection As New MySQLConnection(connectionString) Dim dataAdapter As New MySQLDataAdapter( "SELECT ShipName, ShipCity FROM `sakila`.Orders", connection) dataAdapter.UpdateCommand = New MySQLCommand( "UPDATE `sakila`.Orders SET ShipCity = @ShipCity " + "WHERE Id = @Id", connection) dataAdapter.UpdateCommand.Parameters.Add(new MySQLParameter("@ShipCity", "ShipCity" DbType.String )) dataAdapter.UpdateCommand.Parameters.Add(new MySQLParameter("@Id", "Id", DbType.String)) dataAdapter.UpdateCommand.Parameters(1).SourceVersion = DataRowVersion.Original Dim table As New DataTable() dataAdapter.Fill(table) Dim firstrow As DataRow = table.Rows(0) firstrow("ShipCity") = "Raleigh" dataAdapter.Update(table) Console.WriteLine("Rows after update.") For Each row As DataRow In table.Rows Console.WriteLine("{0}: {1}", row("ShipName"), row("ShipCity")) Next End Using

ストアドプロシージャ

以下のコード例では、MySQL 接続からストアドプロシージャを実行します。

C#

string connectionString = "User=myUser;Password=myPassword;Database=NorthWind;Server=myServer;Port=3306;"; using (MySQLConnection connection = new MySQLConnection(connectionString)) { MySQLCommand cmd = new MySQLCommand("SelectEntries", connection); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new MySQLParameter("@ObjectName", "Account")); // 必要に応じて他のパラメータを追加 ... MySQLDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { for (int i = 0; i < rdr.FieldCount; i++) { Console.WriteLine(rdr.GetName(i) + " --> " + rdr[i]); } Console.WriteLine(); } }

VB.NET

Dim connectionString As String = "User=myUser;Password=myPassword;Database=NorthWind;Server=myServer;Port=3306;" Using connection As New MySQLConnection(connectionString) Dim cmd As New MySQLCommand("SelectEntries", connection) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add(New MySQLParameter("@ObjectName", "Account")) ' 必要に応じて他のパラメータを追加 ... Dim rdr As MySQLDataReader = cmd.ExecuteReader() While rdr.Read() For i As Integer = 0 To rdr.FieldCount - 1 Console.WriteLine(rdr.GetName(i) + " --> " + rdr(i)) Next Console.WriteLine() End While End Using

データ型のマッピング

ほとんどの MySQL データ型は、CData ADO.NET Provider で同じ名前に直接マッピングされます。いくつかの例外を以下の表に示します。

MySQL スキーマ CData スキーマ

TIMESTAMP()

datetime

DOUBLE, REAL

float

FLOAT

real

BOOLEAN

tinyint

TEXT()

tinytext


.NET アプリケーションで MySQL へのシームレスな接続を実現

MySQL データの可能性を最大限に引き出したいとお考えですか?CData MySQL ADO.NET Provider を使用すれば、.NET アプリケーションと MySQL データをシームレスに統合できます。CData ADO.NET Provider for MySQL Community ライセンスでは、使い慣れた SQL を通じて個人の .NET プロジェクトでデータにアクセスできる永久無料のライブラリを提供しています。ライセンスをリクエストして、今すぐ MySQL に接続するアプリの開発を始めましょう!