![]() |
データーベースクラスを利用したデータベースアクセス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
|