【MySql + .NET】MySqlサーバを作ってつなげてみた。
- 2012.11.04 Sunday
- 03:05
Source and Project
他のデータベースもつないでみたくなったので、急遽、MySqlをインストールしてみました。・・・というかVisual Studio を入れると一緒にインストールされているSQLServerの存在をすっかり失念していました(笑)
MySqlに.NETアプリケーションから接続するには、「MySql.Data.dll」というライブラリーを使用すれば良いようです。MySqlの公式サイトからダウンロードできます。
Connector/Net is a fully-managed ADO.NET driver for MySQL.
http://dev.mysql.com/downloads/connector/net/
DbDataSourceEnumeratorを利用して接続先一覧が出るかどうか試してみたかっただけなので、とりあえずコードを書いて実行してみたのですが、現状の設定では出てきませんでした。
using System;
using System.Data;
using System.Data.Common;
using System.Linq;
namespace Art55.DbProviderFactoryDemo20121104_001
{
class Program
{
static void Main()
{
// DbProviderFactory factory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
DbProviderFactory factory = DbProviderFactories.GetFactory("MySql.Data.MySqlClient");
if (factory.CanCreateDataSourceEnumerator)
{
DbDataSourceEnumerator dbDataSourceEnumerator = factory.CreateDataSourceEnumerator();
if (dbDataSourceEnumerator != null)
{
DataTable dataSourceTable = dbDataSourceEnumerator.GetDataSources();
Console.WriteLine(dataSourceTable
.Columns
.Cast<DataColumn>()
.Aggregate(string.Empty, (s, c) => s + c + ", "));
dataSourceTable
.AsEnumerable()
.Select(r => r.Table.Columns.Cast<DataColumn>().Aggregate(string.Empty, (s, c) => s + r[c] + ","))
.ToList()
.ForEach(Console.WriteLine);
}
}
var connection = factory.CreateConnection();
connection.ConnectionString = "Server=192.168.0.4;Database=mysql;Uid=art55;Pwd=art55;";
var command = connection.CreateCommand();
command.CommandText = "show databases";
connection.Open();
var reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(Enumerable
.Range(0, reader.FieldCount)
.Aggregate(string.Empty, (s, c) => s + reader[c] + ","));
}
connection.Close();
command.Dispose();
connection.Dispose();
}
}
}
何も考えずにMySqlをインストールしたため、データベース名すら分からず、四苦八苦してしまいましたが、一応、自分の書いたコードを実行すると接続できていることが確認できました。
Source and Project