大規模なグループ会社で働いているだけでなく、MySQL に触れる機会が必ずあります。ただし、MySQL が提供する機能はほとんどのニーズを満たします。簡潔です。MySQL には、場合によっては大規模なデータベースよりも高速な独自の利点もあります。
では、.NET で MySQL データベースにアクセスするにはどうすればよいでしょうか?おそらく多くの人は、すぐに「OLEDB を使用してください」と言うでしょう。しかし、実際には、.NET OleDb データ プロバイダーを使用すると、システムから次のプロンプトが表示されます。「Net Data OLE DB Provider (System.Data.Odbc) は使用できません。 MSDASQL プロバイダー (Odbc ドライバー用の Microsoft OLE DB プロバイダー) をサポートします。MySQLDriverCS の作成者によると、「所有者によって放棄された」という話もあります。
幸いなことに、MySQL データベースにアクセスする方法は他にも 2 つあります。
ODBC.NET の使用
ODBC.NET (正式名 ODBC .NET Data Provider) は、Microsoft Web サイトからダウンロードする必要がある無料の .NET Framework アドオン コンポーネントです。ダウンロード アドレスは、http: //download.microsoft.comです。 /download/ dasdk/Install/1.0.4030.0/W98NT42KMeXP/EN-US/odbc_net.msi 。システムに MDAC 2.7 以降がインストールされている必要があります。さらに、MySQL 用の ODBC ドライバーもインストールする必要があります。ダウンロード アドレスはhttp://www.mysql.com/downloads/api-myodbc-2.50.htmlです。また、「ODBC」で DSN を設定する必要があります。データ ソース マネージャー」。
オブジェクト設計の点では、ODBC.NET は OLEDB、SQL などと同じです。つまり、ODBC .NET を使用して以前の OleDb を置き換える場合、使用方法はまったく同じです。 NET データ プロバイダー、実際には、検索して置換することでプログラムを完全に変更できます。
コード例を次に
示します
。
{
文字列 constr = "DSN=MySQL;" + "UID=;" ;
conn = 新しい OdbcConnection(constr);
conn.Open();
string query = "test.dbtable に挿入 value10,'disksidkfsdi', 'asdfaf', 'adsfasdf')";
文字列 tmp = null;
OdbcCommand cmd = new OdbcCommand(query, conn);
for(int i = 0; i < 100000; i++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
conn.Close();
クエリ = "test.dbtable から * を選択";
OdbcCommand cmd2 = newOdbcCommand(query, conn);
conn.Open();
OdbcDataReader リーダー = cmd2.ExecuteReader();
while(reader.Read())
{
tmp = リーダー[0].ToString();
tmp = リーダー[1].ToString();
tmp = リーダー[2].ToString();
tmp = リーダー[3].ToString();
}
conn.Close();
クエリ = "test.dbtable から削除";
OdbcCommand cmd3 = newOdbcCommand(query, conn);
conn.Open();
cmd3.ExecuteNonQuery();
}
catch(例外例)
{
MessageBox.Show(例:メッセージ);
}
ついに
{
conn.Close();
}
C# でデータベース アプリケーションを作成したことのある人は、上記のコードがデータの挿入と読み取りの操作を 10 万回実行し、最後にすべてのデータ レコードを削除することを知っているはずです。
MySQLDriverCS を使用する場合、
ほとんどの人はこのことを知らないかもしれません
。 MySQLDriverCS は、MySQL データベース用の無料のオープンソース .NET ドライバーです。SQL .NET データ プロバイダーが SQL Server 用であるのと同様に、MySQL 用に特別に設計されており、MySQL .NET データ プロバイダーと呼ぶことができます。基本的に、MySQL に接続できる限り、MySQLDriverCS を通じてアクセスできます。追加の ODBC データ ソースを設定する必要はありません。
MySQLDriverCS は SourceForge.NET 上のプロジェクトですが、何らかの理由でこの Web サイトに中国ではアクセスできません。
以下は、MySQLDriverCS を使用したコード例です
。
試す
{
string connstr = "データソース=MySQL;パスワード=root;ユーザーID=root;場所=localhost";
conn = 新しい MySQLConnection(constr);
conn.Open();
string query = "test.dbtable に挿入 value(10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')";
文字列 tmp = null;
MySQLCommand cmd = new MySQLCommand(query, conn);
for(int i = 0; i < 100000; i++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
conn.Close();
クエリ = "test.dbtable から * を選択";
MySQLCommand cmd2 = new MySQLCommand(query, conn);
conn.Open();
MySQLDataReader リーダー = cmd2.ExecuteReaderEx();
while(reader.Read())
{
tmp = リーダー[0].ToString();
tmp = リーダー[1].ToString();
tmp = リーダー[2].ToString();
tmp = リーダー[3].ToString();
}
conn.Close();
クエリ = "test.dbtable から削除";
MySQLCommand cmd3 = new MySQLCommand(query, conn);
conn.Open();
cmd3.ExecuteNonQuery();
}
catch(例外例)
{
MessageBox.Show(例:メッセージ);
}
ついに
{
conn.Close();
コード
とほぼ同じです。違いは、Odbc が MySQL になったことです。さらに、Command の ExecuteReader メソッドが MySQLDriverCS では ExecuteReaderEx になっている点に注意してください。詳細については添付文書をご覧ください。
パフォーマンス テスト
読者の中には、私が上で書いたコードの目的を実際に理解している人もいるでしょう。実際の目的は、パフォーマンス テストを行うことです。上記 2 つのコードの実行時間は、ODBC.NET の場合は約 24 秒、MySQLDriverCS の場合は約 17 秒です。 MySQL 専用のデータ ドライバーとして、MySQLDriverCS が ODBC.NET よりもはるかに高速であるのは当然の結果です。
まとめ
この記事では、2 つの MySQL データベース アクセス方法を紹介し、そのパフォーマンスに関する簡単なテストを実施します。読者が MySQL データベースを使用して .NET アプリケーションを開発する際の貴重な参考になれば幸いです。