![]() | Programming Guide | WideStudio/MWT Index 目次 |
データーベースクラスを利用したデータベースアクセス
ODBC を通じたデータベースアクセス
WSCvdb クラスを利用すると ODBC インターフェースを通じてデータベースに アクセスすることができます。
ODBC にアクセスするには、プロパティ WSNtype に WS_DB_ODBC を指定し、 WSCvdb::open 関数にDSN 、ユーザー名、パスワードを指定して実行します。#include <WScom.h> #include <WSCfunctionList.h> #include <WSCbase.h> //---------------------------------------------------------- //Function for the event procedure //---------------------------------------------------------- #include <WSCvdb.h> extern WSCvdb* newvdb_000; void db_ep(WSCbase* object){ long ret = newvdb_000->open("dn","user","passwd"); if (ret == WS_NO_ERR){ //接続。 }else{ //接続失敗、エラーメッセージを取得。 char buffer[1024]; newvdb_000->getErrorMsg(buffer,1024); } }ODBC にアクセスするには、プロパティ WSNhostname に DSN、WSNusername に ユーザ名、WSNpassword にパスワードを指定し、引数無しで WSCvdb::open 関 数を実行します。#include <WScom.h> #include <WSCfunctionList.h> #include <WSCbase.h> //---------------------------------------------------------- //Function for the event procedure //---------------------------------------------------------- #include <WSCvdb.h> extern WSCvdb* newvdb_000; void db_ep(WSCbase* object){ long ret = newvdb_000->open(); if (ret == WS_NO_ERR){ //接続。 }else{ //接続失敗、エラーメッセージを取得。 char buffer[1024]; newvdb_000->getErrorMsg(buffer,1024); } }PostgreSQL インターフェースを通じたデータベースアクセス
WSCvdb クラスを利用すると PostgreSQL インターフェースを通じて直接 PostgreSQL データベースにアクセスすることができます。
PostgreSQL インターフェースを通してアクセスする場合は、プロパティ WSNtype に WS_DB_POSTGRES を指定し、WSCvdb::open 関数にホスト名、ユー ザー名、パスワード、データーベース名、ポート番号を文字列で指定して実行 します。#include <WScom.h> #include <WSCfunctionList.h> #include <WSCbase.h> //---------------------------------------------------------- //Function for the event procedure //---------------------------------------------------------- #include <WSCvdb.h> extern WSCvdb* newvdb_000; void db_ep(WSCbase* object){ long ret = newvdb_000->open("dn","user","passwd","dbname","5432"); if (ret == WS_NO_ERR){ //接続。 }else{ //接続失敗、エラーメッセージを取得。 char buffer[1024]; newvdb_000->getErrorMsg(buffer,1024); } }PostgreSQL にアクセスするには、プロパティ WSNhostname にデータベースの 存在するホスト名、WSNusername にユーザ名、WSNpassword にパスワード、 WSNdbname にデータベース名、WSNport にポート番号を指定し、引数無しで WSCvdb::open 関数を実行します。#include <WScom.h> #include <WSCfunctionList.h> #include <WSCbase.h> //---------------------------------------------------------- //Function for the event procedure //---------------------------------------------------------- #include <WSCvdb.h> extern WSCvdb* newvdb_000; void db_ep(WSCbase* object){ long ret = newvdb_000->open(); if (ret == WS_NO_ERR){ //接続。 }else{ //接続失敗、エラーメッセージを取得。 char buffer[1024]; newvdb_000->getErrorMsg(buffer,1024); } }テーブルの作成
WSCvdb::open を実行してデータベースへの接続が成功した場合、SQL を発行 してデータベースを操作することができます。次の例は、データベース上に shinamono というテーブルを一つ作成する例です。#include <WScom.h> #include <WSCfunctionList.h> #include <WSCbase.h> //---------------------------------------------------------- //Function for the event procedure //---------------------------------------------------------- #include <WSCvdb.h> extern WSCvdb* newvdb_000; void db_ep(WSCbase* object){ char buf1[512]; strcpy(buf1, "create table shinamono(code int, hinmei char(20), nedan float)"); newvdb_000->sqlExecute(buf1); if (ret == WS_NO_ERR){ //成功 }else{ //接続失敗、エラーメッセージを取得。 char buffer[1024]; newvdb_000->getErrorMsg(buffer,1024); } }テーブルへのデータの格納
WSCvdb::open を実行してデータベースへの接続が成功し、操作可能なテーブ ルが存在する場合、SQL を発行してテーブルにデータを確報することができま す。次の例は、データベース上に shinamono というテーブルに品物のデータ を格納する例です。#include <WScom.h> #include <WSCfunctionList.h> #include <WSCbase.h> //---------------------------------------------------------- //Function for the event procedure //---------------------------------------------------------- #include <WSCvdb.h> extern WSCvdb* newvdb_000; void db_ep(WSCbase* object){ newvdb_000->beginTran(); strcpy(buf1, "insert into shinamono values(1, 'みかん', 100)"); newvdb_000->sqlExecute(buf1); strcpy(buf1, "insert into shinamono values(2, 'りんご', 200)"); newvdb_000->sqlExecute(buf1); strcpy(buf1, "insert into shinamono values(3, 'バナナ', 300)"); newvdb_000->sqlExecute(buf1); strcpy(buf1, "insert into shinamono values(4, 'メロン', 0)"); newvdb_000->sqlExecute(buf1); newvdb_000->commitTran(); }テーブル上のデータの参照
WSCvdb::open を実行してデータベースへの接続が成功し、参照可能なテーブ ルが存在する場合、SQL を発行してテーブル上のデータを確報することができ ます。次の例は、データベース上に shinamono というテーブルから品物のデー タを参照し、そしてデータを更新する例です。#include <WScom.h> #include <WSCfunctionList.h> #include <WSCbase.h> //---------------------------------------------------------- //Function for the event procedure //---------------------------------------------------------- #include <WSCvdb.h> #include <WSCdb.h> extern WSCvdb* newvdb_000; void db_ep(WSCbase* object){ WSCvariant var; WSCstring outp; newvdb_000->beginTran(); WSCdbRecord rs(newvdb_000); if(rs.open("select * from shinamono order by code") == WS_NO_ERR) { while (!rs.isEOF()) { outp =""; rs.getColValue("code", &var); int code = (int)var; outp << "code:" << (int)var << " "; rs.getColValue("hinmei", &var); outp << "hinmei:" << (char*)var << " "; rs.getColValue("nedan", &var); char buf[80]; char buf1[80]; double nedan = (float)var + 10; sprintf(buf, "%f", (float)var); outp << "nedan:" << buf << "\n"; printf((char*)outp); if(nedan != 0) { sprintf(buf1, "update shinamono set nedan = %f where code = %d", nedan, code); } else { sprintf(buf1, "delete from shinamono where code = %d", code); } newvdb_000->sqlExecute(buf1); rs.moveNext(); } } rs.close(); newvdb_000->commitTran(); }
Copyright(C) WideStudio/MWT Development Team, 1999-2005 | Last modified: Jul 31, 2005 |