Archive for 3月, 2012
-
Hello, ODBC(API) World!
Posted on 3月 21st, 2012 by cx20
ODBC(API)
ODBC(Open Database Connectivity)は、マイクロソフト社が提唱した DBMS 接続用の API 仕様である。
DBMS の差異は ODBC ドライバによって吸収される為、ODBC の手順にしたがってプログラムを作成すれば、基本的な差異を意識せず、プログラムすることができる。ODBCドライバ ファイル Microsoft Access Driver (*.mdb) ODBCJT32.DLL Microsoft Text Driver (*.txt; *.csv) ODBCJT32.DLL Microsoft Excel Driver (*.xls) ODBCJT32.DLL Microsoft dBase Driver (*.dbf) ODBCJT32.DLL Microsoft ODBC for Oracle MSORCL32.DLL Microsoft Paradox Driver (*.db ) ODBCJT32.DLL SQL Server SQLSRV32.DLL Microsoft Access Driver (*.mdb, *.accdb) ACEODBC.DLL SQL Server Native Client 10.0 SQLNCLI10.DLL ソースコード(VC + ODBC + Jet データベース)
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <sqlext.h> #include <sql.h> int _tmain( int argc, TCHAR* argv[] ) { HENV henv; HDBC hdbc; HSTMT hstmt; _TCHAR szConnStr[1024]; _TCHAR szConnOut[1024]; SQLSMALLINT cchConOut; _TCHAR szSQL[256]; SQLTCHAR szColName[128]; SQLSMALLINT nBufSize; SQLSMALLINT nSqlType; SQLULEN nColSize; SQLSMALLINT nScale; SQLSMALLINT nNullable; SQLTCHAR szMessage[256]; SQLLEN nMessageLen; SQLRETURN nReturn; _tcscpy( szConnStr, _T("Driver={Microsoft Access Driver (*.mdb)};DBQ=hello.mdb") ); _tcscpy( szSQL, _T("SELECT 'Hello, ODBC World!' AS Message") ); SQLAllocEnv( &henv ); SQLAllocConnect( henv, &hdbc ); SQLDriverConnect( hdbc, NULL, (SQLTCHAR*)szConnStr, _tcslen(szConnStr), (SQLTCHAR*)szConnOut, _countof(szConnOut), &cchConOut, SQL_DRIVER_NOPROMPT ); SQLAllocStmt( hdbc, &hstmt ); SQLExecDirect( hstmt, (SQLTCHAR*)szSQL, SQL_NTS ); SQLDescribeCol( hstmt, 1, (SQLTCHAR*)szColName, _countof(szColName), &nBufSize, &nSqlType, &nColSize, &nScale, &nNullable ); SQLBindCol( hstmt, 1, SQL_C_TCHAR, szMessage, _countof(szMessage), &nMessageLen ); while( TRUE ) { nReturn = SQLFetch( hstmt ); if( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { break; } _tprintf( _T("%sn"), szColName ); _tprintf( _T("------------------n") ); _tprintf( _T("%sn"), szMessage ); } SQLFreeStmt( hstmt, SQL_DROP ); SQLDisconnect( hdbc ); SQLFreeConnect( hdbc ); SQLFreeEnv( henv ); return 0; }
ソースコード(VC + ODBC + ACE データベース)
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <sqlext.h> #include <sql.h> int _tmain( int argc, TCHAR* argv[] ) { HENV henv; HDBC hdbc; HSTMT hstmt; _TCHAR szConnStr[1024]; _TCHAR szConnOut[1024]; SQLSMALLINT cchConOut; _TCHAR szSQL[256]; SQLTCHAR szColName[128]; SQLSMALLINT nBufSize; SQLSMALLINT nSqlType; SQLULEN nColSize; SQLSMALLINT nScale; SQLSMALLINT nNullable; SQLTCHAR szMessage[256]; SQLLEN nMessageLen; SQLRETURN nReturn; _tcscpy( szConnStr, _T("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\hello.accdb") ); _tcscpy( szSQL, _T("SELECT 'Hello, ODBC World!' AS Message") ); SQLAllocEnv( &henv ); SQLAllocConnect( henv, &hdbc ); SQLDriverConnect( hdbc, NULL, (SQLTCHAR*)szConnStr, _tcslen(szConnStr), (SQLTCHAR*)szConnOut, _countof(szConnOut), &cchConOut, SQL_DRIVER_NOPROMPT ); SQLAllocStmt( hdbc, &hstmt ); SQLExecDirect( hstmt, (SQLTCHAR*)szSQL, SQL_NTS ); SQLDescribeCol( hstmt, 1, (SQLTCHAR*)szColName, _countof(szColName), &nBufSize, &nSqlType, &nColSize, &nScale, &nNullable ); SQLBindCol( hstmt, 1, SQL_C_TCHAR, szMessage, _countof(szMessage), &nMessageLen ); while( TRUE ) { nReturn = SQLFetch( hstmt ); if( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { break; } _tprintf( _T("%sn"), szColName ); _tprintf( _T("------------------n") ); _tprintf( _T("%sn"), szMessage ); } SQLFreeStmt( hstmt, SQL_DROP ); SQLDisconnect( hdbc ); SQLFreeConnect( hdbc ); SQLFreeEnv( henv ); return 0; }
ソースコード(VC + ODBC + SQL Server)
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <sqlext.h> #include <sql.h> int _tmain( int argc, TCHAR* argv[] ) { HENV henv; HDBC hdbc; HSTMT hstmt; _TCHAR szConnStr[1024]; _TCHAR szConnOut[1024]; SQLSMALLINT cchConOut; _TCHAR szSQL[256]; SQLTCHAR szColName[128]; SQLSMALLINT nBufSize; SQLSMALLINT nSqlType; SQLULEN nColSize; SQLSMALLINT nScale; SQLSMALLINT nNullable; SQLTCHAR szMessage[256]; SQLLEN nMessageLen; SQLRETURN nReturn; _tcscpy( szConnStr, _T("Driver={SQL Server};SERVER=(local);DATABASE=master;UID=sa;PWD=P@ssW0rd") ); _tcscpy( szSQL, _T("SELECT 'Hello, ODBC World!' AS Message") ); SQLAllocEnv( &henv ); SQLAllocConnect( henv, &hdbc ); SQLDriverConnect( hdbc, NULL, (SQLTCHAR*)szConnStr, _tcslen(szConnStr), (SQLTCHAR*)szConnOut, _countof(szConnOut), &cchConOut, SQL_DRIVER_NOPROMPT ); SQLAllocStmt( hdbc, &hstmt ); SQLExecDirect( hstmt, (SQLTCHAR*)szSQL, SQL_NTS ); SQLDescribeCol( hstmt, 1, (SQLTCHAR*)szColName, _countof(szColName), &nBufSize, &nSqlType, &nColSize, &nScale, &nNullable ); SQLBindCol( hstmt, 1, SQL_C_TCHAR, szMessage, _countof(szMessage), &nMessageLen ); while( TRUE ) { nReturn = SQLFetch( hstmt ); if( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { break; } _tprintf( _T("%sn"), szColName ); _tprintf( _T("------------------n") ); _tprintf( _T("%sn"), szMessage ); } SQLFreeStmt( hstmt, SQL_DROP ); SQLDisconnect( hdbc ); SQLFreeConnect( hdbc ); SQLFreeEnv( henv ); return 0; }
ソースコード(VC + ODBC + Oracle)
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <sqlext.h> #include <sql.h> int _tmain( int argc, TCHAR* argv[] ) { HENV henv; HDBC hdbc; HSTMT hstmt; _TCHAR szConnStr[1024]; _TCHAR szConnOut[1024]; SQLSMALLINT cchConOut; _TCHAR szSQL[256]; SQLTCHAR szColName[128]; SQLSMALLINT nBufSize; SQLSMALLINT nSqlType; SQLULEN nColSize; SQLSMALLINT nScale; SQLSMALLINT nNullable; SQLTCHAR szMessage[256]; SQLLEN nMessageLen; SQLRETURN nReturn; _tcscpy( szConnStr, _T("Driver={Microsoft ODBC for Oracle};SERVER=ORCL;UID=scott;PWD=tiger") ); _tcscpy( szSQL, _T("SELECT 'Hello, ODBC World!' AS Message FROM DUAL") ); SQLAllocEnv( &henv ); SQLAllocConnect( henv, &hdbc ); SQLDriverConnect( hdbc, NULL, (SQLTCHAR*)szConnStr, _tcslen(szConnStr), (SQLTCHAR*)szConnOut, _countof(szConnOut), &cchConOut, SQL_DRIVER_NOPROMPT ); SQLAllocStmt( hdbc, &hstmt ); SQLExecDirect( hstmt, (SQLTCHAR*)szSQL, SQL_NTS ); SQLDescribeCol( hstmt, 1, (SQLTCHAR*)szColName, _countof(szColName), &nBufSize, &nSqlType, &nColSize, &nScale, &nNullable ); SQLBindCol( hstmt, 1, SQL_C_TCHAR, szMessage, _countof(szMessage), &nMessageLen ); while( TRUE ) { nReturn = SQLFetch( hstmt ); if( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { break; } _tprintf( _T("%sn"), szColName ); _tprintf( _T("------------------n") ); _tprintf( _T("%sn"), szMessage ); } SQLFreeStmt( hstmt, SQL_DROP ); SQLDisconnect( hdbc ); SQLFreeConnect( hdbc ); SQLFreeEnv( henv ); return 0; }
ソースコード(VC + ODBC + MySQL)
#include <windows.h> #include <tchar.h> #include <stdio.h> #include <sqlext.h> #include <sql.h> int _tmain( int argc, TCHAR* argv[] ) { HENV henv; HDBC hdbc; HSTMT hstmt; _TCHAR szConnStr[1024]; _TCHAR szConnOut[1024]; SQLSMALLINT cchConOut; _TCHAR szSQL[256]; SQLTCHAR szColName[128]; SQLSMALLINT nBufSize; SQLSMALLINT nSqlType; SQLULEN nColSize; SQLSMALLINT nScale; SQLSMALLINT nNullable; SQLTCHAR szMessage[256]; SQLLEN nMessageLen; SQLRETURN nReturn; _tcscpy( szConnStr, _T("Driver={MySQL ODBC 5.1 Driver};Server=localhost;UID=root;PWD=P@ssW0rd") ); _tcscpy( szSQL, _T("SELECT 'Hello, ODBC World!' AS Message") ); SQLAllocEnv( &henv ); SQLAllocConnect( henv, &hdbc ); SQLDriverConnect( hdbc, NULL, (SQLTCHAR*)szConnStr, _tcslen(szConnStr), (SQLTCHAR*)szConnOut, _countof(szConnOut), &cchConOut, SQL_DRIVER_NOPROMPT ); SQLAllocStmt( hdbc, &hstmt ); SQLExecDirect( hstmt, (SQLTCHAR*)szSQL, SQL_NTS ); SQLDescribeCol( hstmt, 1, (SQLTCHAR*)szColName, _countof(szColName), &nBufSize, &nSqlType, &nColSize, &nScale, &nNullable ); SQLBindCol( hstmt, 1, SQL_C_TCHAR, szMessage, _countof(szMessage), &nMessageLen ); while( TRUE ) { nReturn = SQLFetch( hstmt ); if( nReturn != SQL_SUCCESS && nReturn != SQL_SUCCESS_WITH_INFO ) { break; } _tprintf( _T("%sn"), szColName ); _tprintf( _T("------------------n") ); _tprintf( _T("%sn"), szMessage ); } SQLFreeStmt( hstmt, SQL_DROP ); SQLDisconnect( hdbc ); SQLFreeConnect( hdbc ); SQLFreeEnv( henv ); return 0; }
コンパイル&リンク方法(Visual C++)
C:¥> cl hello.c /link odbc32.lib
実行結果
Message ------------------ Hello, ODBC World!
-
Hello, ESQL/C World!
Posted on 3月 20th, 2012 by cx20
ESQL/C
ESQL は埋め込み SQL(Embedded SQL)とも呼ばれ、手続型プログラミング言語(ホスト言語)に SQL を埋め込む方式のことを言う。埋め込み SQL 自体は、標準SQL として ANSI/ISO にて仕様が策定されている。
ESQL/C は、ホスト言語に C言語を対象としており、SQL Server の他、いくつかの DBMS で採用している。なお、Oracle Database 用の 埋め込みSQL は Pro*C と呼ばれる。
SQL Server 用の ESQL/C では、ESQL プリプロセッサにより「.sqc」ファイルから「*.c」ファイルを生成する。ソースコード(ESQL)
#include <stdio.h> int main( int argc, char* argv[] ) { EXEC SQL BEGIN DECLARE SECTION; char szServerDatabase[] = "(local).pubs"; char szLoginPassword[] = "sa.P@ssW0rd"; char szCommand[] = "SELECT 'Hello, ESQL/C World!' AS Message"; char message[32] = { 0 }; EXEC SQL END DECLARE SECTION; EXEC SQL CONNECT TO :szServerDatabase USER :szLoginPassword; EXEC SQL DECLARE C1 CURSOR FOR stmt; EXEC SQL PREPARE stmt FROM :szCommand; EXEC SQL OPEN C1; while ( SQLCODE == 0 ) { EXEC SQL FETCH C1 INTO :message; if ( SQLCODE == 0 ) { printf( "Messagen" ); printf( "--------------------n" ); printf( "%sn", message ); } } EXEC SQL CLOSE C1; EXEC SQL DISCONNECT ALL; return 0; }
上記コードは、ESQL プリプロセッサにより、以下の C言語のコードが生成される。
ソースコード(C言語)
/* ===== hello.c =====*/ /* ===== NT doesn't need the following... */ #ifndef WIN32 #define WIN32 #endif #define _loadds #define _SQLPREP_ #include <sqlca.h> #include <sqlda.h> #include <string.h> #define SQLLENMAX(x) ( ((x) > 32767) ? 32767 : (x) ) short ESQLAPI _loadds sqlaaloc( unsigned short usSqlDaId, unsigned short sqld, unsigned short stmt_id, void far *spare); short ESQLAPI _loadds sqlxcall( unsigned short usCallType, unsigned short usSection, unsigned short usSqldaInId, unsigned short usSqlDaOutId, unsigned short usSqlTextLen, char far *lpszSQLText); short ESQLAPI _loadds sqlacall( unsigned short usCallType, unsigned short usSection, unsigned short usSqldaInId, unsigned short usSqlDaOutId, void far *spare); short ESQLAPI _loadds sqladloc( unsigned short usSqldaInId, void far *spare); short ESQLAPI _loadds sqlasets( unsigned short cbSqlText, void far *lpvSqlText, void far *spare); short ESQLAPI _loadds sqlasetv( unsigned short usSqldaInId, unsigned short sqlvar_index, unsigned short sqltype, unsigned short sqllen, void far *sqldata, void far *sqlind, void far *spare); short ESQLAPI _loadds sqlastop( void far *spare); short ESQLAPI _loadds sqlastrt( void far *pid, void far *spare, void far *sqlca); short ESQLAPI _loadds sqlausda( unsigned short sqldaId, void far *lpvSqlDa, void far *spare); extern struct tag_sqlca far sql_sqlca; extern struct tag_sqlca far *sqlca; struct sqla_program_id2 {unsigned short length;unsigned short rp_rel_num;unsigned short db_rel_num;unsigned short bf_rel_num;unsigned char sqluser[30];unsigned char sqlusername[30]; unsigned char planname[256];unsigned char contoken[8];unsigned char buffer[8];};static struct sqla_program_id2 program_id = {340,2,0,0," ","","hello","AAAvBYD0"," "}; static void far* pid = &program_id; #line 1 "hello.sqc" #line 2 "hello.sqc" int main( int argc, char* argv[] ) { #line 5 /* EXEC SQL BEGIN DECLARE SECTION; */ #line 5 char szServerDatabase[] = "(local).pubs"; char szLoginPassword[] = "sa.P@ssW0rd"; char szCommand[] = "SELECT 'Hello, ESQL/C World!' AS Message"; char message[32] = { 0 }; #line 10 /* EXEC SQL END DECLARE SECTION; */ #line 10 #line 11 /* EXEC SQL CONNECT TO :szServerDatabase USER :szLoginPassword; */ #line 11 #line 11 { #line 11 sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca); #line 11 sqlaaloc(2, 2, 1, (void far *)0); #line 11 sqlasetv(2, 0, 462, (short) SQLLENMAX(sizeof(szServerDatabase)), (void far *)szServerDatabase, (void far *)0, (void far *)0L); #line 11 sqlasetv(2, 1, 462, (short) SQLLENMAX(sizeof(szLoginPassword)), (void far *)szLoginPassword, (void far *)0, (void far *)0L); #line 11 sqlxcall(30, 1, 2, 0, 55, (char far *)" CONNECT TO @p1 USER @p2 "); #line 11 SQLCODE = sqlca->sqlcode; #line 11 sqlastop((void far *)0L); #line 11 } #line 12 #line 12 /* EXEC SQL DECLARE C1 CURSOR FOR stmt; */ #line 12 #line 13 /* EXEC SQL PREPARE stmt FROM :szCommand; */ #line 13 #line 13 { #line 13 sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca); #line 13 sqlasets((unsigned short)strlen(szCommand), (void far *)szCommand, (void *)0L); #line 13 sqlacall(27, 2, 0, 0, 0L); #line 13 SQLCODE = sqlca->sqlcode; #line 13 sqlastop((void far *)0L); #line 13 } #line 14 #line 14 /* EXEC SQL OPEN C1; */ #line 14 #line 14 { #line 14 sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca); #line 14 sqlxcall(110, 2, 0, 0, 18, (char far *)"/* C1 2 nohold */ "); #line 14 SQLCODE = sqlca->sqlcode; #line 14 sqlastop((void far *)0L); #line 14 } #line 15 #line 14 { #line 14 sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca); #line 14 sqlacall(26, 2, 0, 0, 0L); #line 14 SQLCODE = sqlca->sqlcode; #line 14 sqlastop((void far *)0L); #line 14 } #line 15 while ( SQLCODE == 0 ) { #line 17 /* EXEC SQL FETCH C1 INTO :message; */ #line 17 #line 17 { #line 17 sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca); #line 17 sqlaaloc(1, 1, 2, (void far *)0); #line 17 sqlasetv(1, 0, 462,(short) SQLLENMAX(sizeof(message)),(void far *)&message, (void far *)0,0L); #line 17 sqlxcall(25, 2, 0, 1, 26, (char far *)" FETCH C1 INTO : "); #line 17 SQLCODE = sqlca->sqlcode; #line 17 sqlastop((void far *)0L); #line 17 } #line 18 if ( SQLCODE == 0 ) { printf( "Messagen" ); printf( "--------------------n" ); printf( "%sn", message ); } } #line 25 /* EXEC SQL CLOSE C1; */ #line 25 #line 25 { #line 25 sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca); #line 25 sqlxcall(20, 2, 0, 0, 11, (char far *)" CLOSE C1 "); #line 25 SQLCODE = sqlca->sqlcode; #line 25 sqlastop((void far *)0L); #line 25 } #line 26 #line 26 /* EXEC SQL DISCONNECT ALL; */ #line 26 #line 26 { #line 26 sqlastrt((void far *)pid, (void far *)0, (struct tag_sqlca far *)sqlca); #line 26 sqlxcall(36, 3, 0, 0, 17, (char far *)" DISCONNECT ALL "); #line 26 SQLCODE = sqlca->sqlcode; #line 26 sqlastop((void far *)0L); #line 26 } #line 27 return 0; } long SQLCODE;
コンパイル&リンク方法(Visual C++)
C:¥> nsqlprep hello.sqc C:¥> cl hello.c /link sqlakw32.lib caw32.lib
実行結果
Message -------------------- Hello, ESQL/C World!
-
Hello, DB-Library World!
Posted on 3月 19th, 2012 by cx20
DB-Library
DB-Library は SQL Server 用のネイティブライブラリ(C API)である。
SQL Server 2000 が最後のリリースとなっており、SQL Server 2005 以降は SQL Server Native Client(OLE DB または ODBC)の使用が推奨されている。
ソースコード
#define DBNTWIN32 #include "windows.h" #include <sqlfront.h> #include <sqldb.h> #include <stdio.h> int main( int argc, char* argv[] ) { DBPROCESS* dbproc; LOGINREC* login; char message[256]; dbinit(); login = dblogin(); DBSETLUSER( login, "sa" ); DBSETLPWD ( login, "P@ssw0rd" ); dbproc = dbopen( login, "(local)" ); dbcmd ( dbproc, "SELECT 'Hello, DB-Library World' AS Message"); dbsqlexec ( dbproc ); dbresults ( dbproc ); dbbind ( dbproc, 1, NTBSTRINGBIND, (DBINT)0, message ); while( dbnextrow( dbproc ) != NO_MORE_ROWS ) { printf( "Messagen" ); printf( "-----------------------n" ); printf( "%sn", message ); } dbexit(); return 0; }
コンパイル&リンク方法(Visual C++)
C:¥> cl hello.c /link ntwdblib.lib
実行結果
Message ------------------------ Hello, DB-Library World!
-
Hello, MongoDB World!
Posted on 3月 18th, 2012 by cx20
MongoDB
MongoDB は最近注目されているドキュメント指向のデータベースである。NoSQL に分類される。名前は「humongous(ばかでかい)」に由来する。
対話シェルの mongo は JavaScript エンジンである SpiderMonkey 上に構築されており、JavaScript シェルとしても利用できる。
ソースコード
db.hello.insert( { message: 'Hello, MongoDB World!' } ); var cur = db.hello.findOne(); print( cur.message );
実行方法
$ mongo --quiet hello.js
実行結果
Hello, MongoDB World!
-
Hello, CouchDB World!
Posted on 3月 17th, 2012 by cx20
CouchDB
CouchDB は Erlang で実装されているドキュメント指向のデータベースである。NoSQL に分類される。名前の由来は「couch(長椅子)」から。ガチガチの設計となる RDBMS に対して、もう少し気楽にいこうという意味と思われる。なお、GUI の管理画面は「Futon(日本語の布団を意味する)」という名前である。
データベースへのアクセスは HTTP ベース(RESTful)で行われ、データのフォーマットとしては JSON が採用されている。実行&実行結果
# 環境変数設定 $ URL=http://127.0.0.1:5984 # DB 作成 $ curl -X PUT ${URL}/hello {"ok":true} # データ追加 $ curl -X PUT -d '{"message":"Hello, CouchDB World!"}' ${URL}/hello/doc {"ok":true,"id":"doc","rev":"1-fbf141c12ad026bd20830f74ec82e254"} # データ取得 $ curl -X GET ${URL}/hello/doc {"_id":"doc","_rev":"1-fbf141c12ad026bd20830f74ec82e254","message":"Hello, CouchDB World!"}
-
Hello, Derby World!
Posted on 3月 16th, 2012 by cx20
Derby
Apache Derby は Java で実装された RDBMS である。「derby」は英語で競馬の意味。
現在、JDK に Java DB として組み込まれている。
ソースコード
設定ファイル
ij.connection.hello=jdbc:derby://localhost/hello;create=true ij.user=sa ij.password=P@ssw0rd
実行方法
$ ij -p derby.properties hello.sql
実行結果
MESSAGE ------------------- Hello, Derby World! 1 行が選択されました
-
Hello, H2 Database World!
Posted on 3月 15th, 2012 by cx20
H2 Database
H2 Database は速さに定評のある Java 製の DBMS である。組み込みモードとサーバーモードがある。名前の由来は「Hypersonic2」から。
ソースコード
実行方法
$ java -cp h2*.jar org.h2.tools.RunScript -url "jdbc:h2:~/hello" -script "hello.sql" -showResults
実行結果
SELECT 'Hello, H2 Database World!' AS Message; --> Hello, H2 Database World! ;
-
Hello, HSQLDB World!
Posted on 3月 14th, 2012 by cx20
HSQLDB
HSQLDB(HyperSQL Database Engine)は Java 製の RDBMS である。インメモリモード、スタンドアローンモード、サーバーモードなどがある。
OpenOffice.org の Base(データベースソフト)のデータベースエンジンとしても採用されている。
ソースコード
実行方法
$ java -jar sqltool.jar --inlineRc url=jdbc:hsqldb:mem:memdbid,user=SA,password= hello.sql
実行結果
Hello, HSQLDB World!
-
Hello, DB2 World!
Posted on 3月 13th, 2012 by cx20
DB2
DB2 は IBM が開発している商用の RDBMS(リレーショナルデータベース)である。名前の由来は当時の主流DBMSを第1世代ととらえ、次世代の位置づけとして名付けられたらしい。
2006年に無償で利用できる「DB2 Express-C」が発表された。
ソースコード
実行方法
C:¥> db2 connect to データベース C:¥> db2 -f hello.sql
実行結果
MESSAGE ----------------- Hello, DB2 World! 1 レコードが選択されました。
-
Hello, Berkeley DB World!
Posted on 3月 12th, 2012 by cx20
Bekeley DB
Berkeley DB は商用とオープンソースのデュアルライセンスの DBMS である。
カリフォルニア大学バークレイ校出身者によって開発された。現在は、Oracle が所有している。
SQLite 同様にアプリケーション組み込み用途に用いられることが多い。
有名どころとしては Subversion のリポジトリ DB などに採用されている。
ソースコード
実行方法
C:¥> dbsql -header -column < hello.sql
実行結果
Message ------------------------- Hello, Berkeley DB World!