ASP.NET aspxページでMySQLに接続する

IIS 8でaspxなページが表示できるようになりました。

Windows Server 2012 + IIS 8でaspxを有効にする
http://symfoware.blog68.fc2.com/blog-entry-1081.html

MySQLデータベースに、aspxで接続してみます。

ちなみに、データベースのインストールはこちら。
Windows Server 2012 へMySQL 5.5をインストールし、IIS 8 + PHP 5.4.10から接続する


aspx初心者なので、苦労しました。
とりあえず動くまでの手順です。





MySQL .NET Connecterのダウンロードとインストール



.NETで接続するためのドライバをダウンロードします。
http://dev.mysql.com/downloads/connector/net/6.5.html#downloads

Windows (x86, 32-bit), MSI Installerの「Download」をクリック。

172_01.png


ログイン画面が表示されます。
アカウントを作りたくない場合は、「No thanks, just start my download.」をクリック。

172_02.png


これで「mysql-connector-net-6.5.5.msi」がダウンロード出来ました。


サーバーで実行し、ドライバのインストールを行います。

172_03.png


インストールタイプは「Typical」を選択しました。

172_04.png


「Install」をクリックして、インストールを実行します。

172_05.png


インストール完了です。
「Finish」をクリックして、インストーラーを終了します。

172_06.png


これで、MySQLの.NET Connecterのインストールは完了です。







MySQLへデータベースとテーブルの作成



サンプルで接続、検索するデータベースをMySQLに作成しました。

実行したクエリは以下の通り。


create database sample CHARACTER SET utf8 COLLATE utf8_general_ci;

create table aspx_test (
id int,
name varchar(100)
);


insert into aspx_test (id, name) values (1, 'aspxからの読み取りテスト');




「sample」データベースに「aspx_test」というテーブルを作りました。


なお、クエリは
Windows Server 2012 へMySQL 5.5をインストールし、IIS 8 + PHP 5.4.10から接続する
ここで接続の確認に使用した「Adminer」を使用して実行しました。






接続と検索のサンプルaspx



色々な方のお力を拝借しました。
文末に参考URLとして、まとめて記載しています。

試行錯誤の末、出来上がったプログラムは以下のとおり。


  1. <%@ Page Language="C#" %>
  2. <%@ Import Namespace="System.Data" %>
  3. <%@ Import Namespace="MySql.Data.MySqlClient" %>
  4. <script runat="server">
  5. protected void Page_Load(Object source, EventArgs e) {
  6.     if (IsPostBack) {
  7.         return;
  8.     }
  9.     
  10.     // 接続文字列を作成
  11.     string connectionString =
  12.         "Server=localhost;" +
  13.         "Database=sample;" +
  14.         "User ID=root;" +
  15.         "Password=P@ssw0rd";
  16.     
  17.     // 取得したデータ退避用
  18.     DataTable dt = new DataTable();
  19.     
  20.     using (MySqlConnection con = new MySqlConnection(connectionString))
  21.     using (MySqlDataAdapter adapter = new MySqlDataAdapter()) {
  22.         con.Open();
  23.         
  24.         // クエリを実行して、結果をDataTableに退避
  25.         string query = "SELECT * FROM aspx_test";
  26.         adapter.SelectCommand = new MySqlCommand(query, con);
  27.         adapter.Fill(dt);
  28.         
  29.     }
  30.     
  31.     // 画面上のDataGridとバインド
  32.     datagrid.DataSource = new DataView(dt);
  33.     DataBind();
  34. }
  35. </script>
  36. <html>
  37. <body>
  38. <asp:DataGrid id="datagrid" runat="server" />
  39. </body>
  40. </html>



これを、「mysql.aspx」というファイル名で、
Windows Server 2012 + IIS 8でaspxを有効にする

ここで作成したアプリケーションフォルダ(例では、C:\inetpub\test)に保存しました。


ブラウザで、http://[サーバーID]/test/mysql.aspxを表示すれば、
データの検索結果が表示されるはずですが、この状態だと以下のエラーが表示されるはずです。


'/test' アプリケーションでサーバー エラーが発生しました。

コンパイル エラー

説明: この要求を送信するために必要なリソースをコンパイル中に、エラーが発生しました。
以下のエラーの詳細を確認して、ソース コードを修正してください。

コンパイル エラー メッセージ: CS0246: 型または名前空間名 'MySql' が見つかりませんでした。
using ディレクティブまたはアセンブリ参照が不足しています。

ソース エラー:
行 1: <%@ Page Language="C#" %>
行 2: <%@ Import Namespace="MySql.Data.MySqlClient" %>
行 3:
行 4: <script runat="server">
ソース ファイル: c:\inetpub\test\mysql.aspx    行: 2

詳しいコンパイラ出力を表示:
バージョン情報: Microsoft .NET Framework バージョン:4.0.30319; ASP.NET バージョン:4.0.30319.18010





このエラーでしばらくはまったのですが、

Shared Code Folders in ASP.NET Web Site Projects
http://msdn.microsoft.com/en-us/library/t990ks23(v=vs.100).aspx

aspxで、外部dllを呼び出す場合は、同じ階層に「bin」というフォルダを作成し、
その中にdllをコピーしておく必要があるとのこと。


MySQLの.NET Connecterのdllはデフォルトで
「C:\Program Files (x86)\MySQL\MySQL Connector Net 6.5.5\Assemblies\v4.0」
にインストールされます。

この中にある、「MySql.Data.dll」をコピーし、aspxを配置しているフォルダに、「bin」という
フォルダを作成してコピーしてやります。

今回の例だと、「C:\inetpub\test\bin」を作成し、その中にコピーしました。

mysql.aspxがあるフォルダに「bin」を作成。

172_07.png


その中に「MySql.Data.dll」をコピー。

172_08.png


dllをコピーしたら、再度ブラウザでhttp://[サーバーID]/test/mysql.aspxを表示します。

172_09.png


そっけないですが、データベースとの接続とクエリの実行が確認出来ました。








【参考URL】

データベースに接続する
http://www.tutorial.useiis7.net/a015/mssql_basic.htm

Webフォームにおけるデータ連結 Part3 DataGridコントロール
http://www.atmarkit.co.jp/fdotnet/aspnet/aspnet11/aspnet11_01.html

.Net から MySQL へ接続するには
http://blog.enjoitech.jp/article/92

24.2.3.4. MySqlDataAdapter の使用
http://dev.mysql.com/doc/refman/5.1/ja/connector-net-examples-mysqldataadapter.html

Shared Code Folders in ASP.NET Web Site Projects
http://msdn.microsoft.com/en-us/library/t990ks23(v=vs.100).aspx


Windows Server 2012 + IIS 8でaspxを有効にする
http://symfoware.blog68.fc2.com/blog-entry-1081.html

Windows Server 2012 へMySQL 5.5をインストールし、IIS 8 + PHP 5.4.10から接続する
http://symfoware.blog68.fc2.com/blog-entry-1078.html

Debian(Squeeze) + MonoでMySQLに接続する
http://symfoware.blog68.fc2.com/blog-entry-794.html
関連記事

コメント

非公開コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
Symfoware まとめ

PR




検索フォーム

月別アーカイブ