データーベースクラスを利用したデータベースアクセス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>
extern WSCvdb* newvdb__000;
void db_ep(WSCbase* object){
newvdb__000->beginTran();
WSCdbRecord rs(newvdb__000);
if(rs.open("select * from shinamono order by code") == WS_NO_ERR) {
while (!rs.isEOF()) {
rs.getColValue("code", &var);
int code = (int)var;
cout << "code:" << (int)var << " ";
rs.getColValue("hinmei", &var);
cout << "hinmei:" << (char*)var << " ";
rs.getColValue("nedan", &var);
char buf[80];
double nedan = (float)var + 10;
sprintf(buf, "%f", (float)var);
cout << "nedan:" << buf << "\n";
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();
}
Document Release 3.00 For Use with Wide Studio Release 3.00, Summper 2002
|