D言語でCGI / MySQL


aaacafeでmysqlに接続するcgi

aaacafeでは、mysqlが使えます。 また、d言語にはmysql接続用のAPIが存在します。

そこで、ここではaaacafeのmysqlデータベースに接続するD言語cgiの作り方を解説します。

WindowsオンリーやLinuxでも出来ると思いますがまだテストしてみていません。

aaacafeでmysql登録

まず、aaacafeでmysqlの登録を行います。

  • http://db.aaacafe.ne.jp/ 上のアドレスから、登録を行います。
  • データベースユーザ
  • データベースパスワード
  • データベース名
  • データベースホスト名 をメモして置いてください。

D言語のmysqlライブラリをダウンロード

上のアドレスから、(mysql_binding_0.1.3.tgz 2004/10/6 現在)をダウンロードします。

freebsdのMySQLダウンロード

ここから、mysql-standard-4.0.21-unknown-freebsd4.7-i386.tar.gzをダウンロード

アーカイブファイル内の

  • /lib/libmysqlclient.a をコピー

プログラム

データベースに接続し、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

実際に動いているURL

ファイル

参考URL

mysqlのC用APIの解説

*MenuBar

人気の10件

  • counter: 3849
  • today: 1
  • yesterday: 0
  • online: 1