2007年12月アーカイブ

ASP2.0でのファイルアップロードの方法は簡単です。デザイン画面でFileUploadコントロール、Button、Labelをドラッグ&ドロップします。

fileupload.png



アップロードボタンのClickイベントに以下のように記述するだけです。
If FileUpload1.HasFile Then
    FileUpload1.SaveAs("d:\work2\" & FileUpload1.FileName)
Else
    Label1.Text = "ファイルを正しく選択してください。"
End If
HasFileプロパティでファイルがFileUploadコントロールに格納されているかどうかを確認します。HasFileプロパティがTrueであればSaveAsメソッドにアップロード先のパスを指定するのみです。


データセットの各項目へのアクセス方法について紹介します。
まずは、レコード件数です。
Dim da As SqlDataAdapter = New SqlDataAdapter(sqlStr, connStr)
Dim ds As DataSet = New DataSet

da.Fill(ds)
'レコード件数チェック
If ds.Tables(0).Rows.Count = 0 Then
    Response.Write("データはありません。")
End If
SQLの発行が1つであればTable(0)となります。複数のSQLを発行している場合にTables(index)で参照できます。

次は、テーブルの各項目へのアクセス方法です。
先頭レコードの一番はじめのフィールドへの参照は以下のようになります。
ds.Tables(0).Rows(0)(0)

データアダプタは、データベースとデータセットの橋渡しを行うようなものです。
ここでは、SQLServerに接続してGrideViewへの表示を行います。
まずは、aspxファイルのデザイン画面にGridViewをドラッグ&ドロップします。これだけであとは、vbファイルに以下のコードを記述します。
Dim connStr As String = "Data Source=(local);Initial Catalog=test;User ID=testUsr;Password=pass"
Dim sqlStr As String = "SELECT * FROM [User]"

Dim da As SqlDataAdapter = New SqlDataAdapter(sqlStr, connStr)
Dim ds As DataSet = New DataSet

da.Fill(ds)
GridView1.DataSource = ds
GridView1.DataBind()
これで表示できてしまいます。

ASP.NET MySQLへConnector/Netで接続

前回はODBCでの接続でしたが、今回はパフォーマンスがより良いとされている、Connector/Netでの接続を行います。
まずはConnector/Net 5.1をこちらからダウンロードしてインストールします。
次にVS2005のプロジェクトに参照の設定をします。
メニュー→Webサイト→参照の追加→.NETタブの中の、MySQL.Dataを選択してOKボタンをクリックします。
これでvbファイルでImportの記述が行えます。

Dim conn As MySqlConnection
Dim ds As New DataSet()
Dim da As New MySqlDataAdapter()

'接続文字列
Dim connStr As String = "Database=bookmark;Data Source=localhost; _
                                       User Id=user;Password=pass"

conn = New MySqlConnection(connStr)

da.SelectCommand = New MySqlCommand("SELECT * FROM items", conn)

'DataSetに格納
da.Fill(ds)

'GridViewへバインド
GridView1.DataSource = ds
GridView1.DataBind()

これでMySQLからデータを取得してGridViewに表示されます。

GridViewの更新はCommandFieldを追加するだけで簡単にできますが、MySQLだとそうはいきません。データソース構成ウィザードでUpdateCommandをうまく作れないためです。
ということでここでは、コードからGridViewを更新する方法をご紹介します。SQLServerであればこんなことは不要なんですけどね。
ここで紹介する画面イメージは以下のようになっています。


ASP.NET MySQLへのODBC接続

MySQLへの接続をODBCで試してみたところ、文字化けした。。DBの文字コードはUTF-8にしてあるのにだめでした。
環境:XP Pro, VS2005, MySQL5.0, ODBC3.51(MySQLはWin, Linux両方試した)
ただODBCを5.1にしたらWin,Linuxどちらも文字化けせず。。

ちなみにSqlDataSourceの構成ウィザードでもSQLServerのように単純にはいきません。
Selectステートメントの構成では"カスタム"を選ばないとエラーになる。


MySQL 他のマシンからの接続

MySQLではデフォルトはlocalhostからの接続のみ許可されています。ここではWindowsマシンのMySQL AdministratorからMySQL(Linux)に接続を行います。
まずはuserテーブルに接続するHost(IPアドレス指定)とユーザ(test)を登録します。
mysql> use mysql;
mysql> INSERT INTO user (host, User) VALUES('192.168.xxx.xxx', 'test');
次にパスワードを設定します。
mysql> UPDATE user SET Password=PASSWORD('パスワード') WHERE User='test';
mysql> flush privileges;
これでWindowsのMySQL Administratorでログインできます。ただしこれだけではスキーマやテーブル、ユーザの作成などが行えません。今作成したtestユーザに権限を設定する必要があります。ここではすべての権限を付与しています。
mysql> GRANT ALL PRIVILEGES ON *.* TO root@192.168.xxx.xxx IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
これでめでたくWindowsからすべての操作が可能になります。


インストール直後のMySQLはrootにパスワードが設定されていませんので、以下のコマンドでログインできます。
$ mysql -u root
パスワード設定がないのはまずいので設定を行いましょう。
ユーザ情報はmysqlデータベースのuserテーブルに入っているのでこのテーブルを更新すればよいです。ただしパスワードの項目は暗号化して入れる必要があります。
mysql> use mysql
mysql> UPDATE user SET Password=PASSWORD('パスワード') WHERE User='root';
mysql> flush privileges;
確認してみましょう。
mysql> select Host, User, Password from user;
+-----------------+--------+------------------+
| Host            | User   | Password         |
+-----------------+--------+------------------+
| localhost       | root   | a3db40316b5948b2 |
+-----------------+--------+------------------+
パスワードが設定されました。次回ログイン時は-pをつけるとパスワードの入力を求められます。
$ mysql -u root -p
Enter password:
パスワードを入力するとログインできます。

MySQL 文字コード設定(utf8)

Linux(CentOS5)にMySQLをインストールしてみた。
文字コードはUTF-8にする。文字化け対応として/etc/my.conf を開きmysqldに以下の2行を追加。
[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

サービスを再起動すると反映されます。 確認は、mysqlに入り以下のコマンドを入力。
mysql> show variables like "char%";
-------------------------------------- +-------------------------------------+
| Variable_name                 | Value                      |
---------------------------------------+----------------------------------------+
| character_set_client         | utf8                                   |
| character_set_connection | utf8                                   |
| character_set_database    | utf8                                  |
| character_set_filesystem  | binary                               |
| character_set_results       | utf8                                   |
| character_set_server        | utf8                                   |
| character_set_system      | utf8                                   |
| character_sets_dir            | /usr/share/mysql/charsets/ |
----------------------------------------+---------------------------------------+

うーん、すっきりとutf8に揃いました。

このアーカイブについて

このページには、2007年12月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2007年11月です。

次のアーカイブは2008年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。