目的を再確認しておこう。Apacheの環境下で、asp.netを使う事だ。そのデータベースに、SQL Server 2008 R2 を新たにインストールしたら、Apacheが起動しないなどの失敗をした。そこで、MySQLを試す事になる。
昨日のダウンロード先から、ADO.NET Driver for MySQLをダウンロードする。これも再確認だが、会員登録する必要はない。ダウンロードしたファイルは、難なくインストールが完了する。さっそく、動作を確認するため、MySQLにコマンドプロンプトでデータベースを作成する。
> create database vbnet; として見た。
> use vbnet;
> create table books(id int primary key, title varchar(40) not null, ...);
てな具合で、データベースを作る。データは、まだ空だ。
Web Developer を起動して、ソリューションエクスプローラを右クリック、参照の追加、.NETタブ、MySql.Dataを選択してOKをクリック、これでMySql.Data.Dllが有効になる。
コードを書く。まず、
Imports MySql.Data.MySqlClient
コマンドボタンを適当に置き、そこにコードを書く。例が有ったので、それを利用する。まずは、読み込み。
Dim Connection As New MySql.Data.MySqlClient.MySqlConnection
Dim Command As MySql.Data.MySqlClient.MySqlCommand
Dim DataReader As MySql.Data.MySqlClient.MySqlDataReader
'接続文字列を設定
Connection.ConnectionString = "Database=vbnet;Data Source=localhost;User Id=root;Password=yourpassword"
'オープン
Connection.Open()
'コマンド作成
Command = Connection.CreateCommand
'SQL作成
Command.CommandText = "SELECT id, title, author, publisher, price, pub_date FROM books;"
'データリーダーにデータ取得
DataReader = Command.ExecuteReader
'データを全件出力
Do Until Not DataReader.Read
Label7.Text = DataReader.Item("id").ToString
Label8.Text = DataReader.Item("title").ToString
Label9.Text = DataReader.Item("author").ToString
Label10.Text = DataReader.Item("publisher").ToString
Label11.Text = DataReader.Item("price").ToString
Label12.Text = DataReader.Item("pub_date").ToString
Loop
'破棄
DataReader.Close()
Command.Dispose()
Connection.Close()
Connection.Dispose()
次は、書き込み
Dim Connection As New MySqlConnection
Dim Command As MySqlCommand
Dim DataReader As MySqlDataReader
Dim dt_id As New ArrayList
Dim dt_title As New ArrayList
Dim dt_author As New ArrayList
Dim dt_publisher As New ArrayList
Dim dt_price As New ArrayList
Dim dt_pub_date As New ArrayList
Dim x1 As String
'接続文字列を設定
Connection.ConnectionString = "Database=vbnet;Data Source=localhost;User Id=root;Password=yourpassword"
'オープン
Connection.Open()
'コマンド作成
Command = Connection.CreateCommand
x1 = "insert into books values ("
x1 = x1 & Val(TextBox1.Text) & ", '" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "'," & TextBox5.Text & ",'" & TextBox6.Text & "');"
'SQL作成
Command.CommandText = x1
'データリーダーにデータ取得
DataReader = Command.ExecuteReader
'破棄
DataReader.Close()
Command.Dispose()
Connection.Close()
Connection.Dispose()
一応、動作は確認できた。
次は、これをApache環境下にコピーする。実行だ。所が、これが、うまく行かない。要は、始めのImports MySql.Data.MySqlClientが、効いていないのだ。
ならば、記述をImportsを使わずに、文内に書き込む。だが、状態は同じ。
残るは、コンパイルしては、どうかと言う発想になる。明日は、この辺の事情を確認したい。
MySqlは、一応動作した。おそらく、まだ試していないが、Visual basic 2010 でも同様に使えるのだろう。そこは収穫だ。