aaacafeでは、mysqlが使えます。 また、d言語にはmysql接続用のAPIが存在します。
そこで、ここではaaacafeのmysqlデータベースに接続するD言語cgiの作り方を解説します。
WindowsオンリーやLinuxでも出来ると思いますがまだテストしてみていません。
まず、aaacafeでmysqlの登録を行います。
上のアドレスから、(mysql_binding_0.1.3.tgz 2004/10/6 現在)をダウンロードします。
ここから、mysql-standard-4.0.21-unknown-freebsd4.7-i386.tar.gzをダウンロード
アーカイブファイル内の
データベースに接続し、testテーブルを削除、testテーブルを作成、testテーブルにデータをinsert、testテーブルをselect、select結果表示、データベースの接続を解除といった操作をします。
host,user,passwd,dbはそれぞれ環境に合わせて書き換えてください。
このmysql_test.dの内容は、MySQL Bindings for Dに含まれているものとは違います。
// mysql_test.d // gdc -o mysql_test.cgi mysql_test.d mysql.d libmysqlclient.a import std.c.stdio; import mysql; void main() { printf("content-type: text/html;\n\n"); char[] host="host"; char[] user="user"; char[] passwd="passwd"; char[] db="db"; MYSQL mysql; MYSQL_RES *result; MYSQL_ROW row; ulong rows; mysql_init(&mysql); if (!mysql_real_connect(&mysql,host,user,passwd,db,0,null,0)) {; printf("mysql connect error\n"); return; } mysql_query(&mysql, "DROP TABLE `test`"); mysql_query(&mysql, "CREATE TABLE `test` (`test` VARCHAR( 255 ) NOT NULL," "`test2` VARCHAR( 255 ) NOT NULL );"); mysql_query(&mysql, "INSERT INTO `test` ( `test`,`test2` ) VALUES ('aaa','bbb');"); mysql_query(&mysql, "SELECT * FROM `test` limit 2"); result = mysql_use_result(&mysql); while ((row = mysql_fetch_row(result)) != null) { printf("%s %s<br>\n",row[0],row[1]); } mysql_close(&mysql); }
i386-freebsd-gdc -o mysql_test.cgi mysql_test.d mysql.d libmysqlclient.a strip mysql_test.cgi
としてコンパイルして、無駄な情報を削除してください。
バイナリモードでmysql_test.cgiをftpでアップロードします。
mysql_test.cgiのパーミッションを745にします。
実際に動いているURL
mysqlのC用APIの解説