设为首页 加入收藏

TOP

C语言调用powerBuilder开发数据库
2014-11-23 23:33:43 来源: 作者: 【 】 浏览:1
Tags:语言 调用 powerBuilder 开发 数据库

C语言编写数据库系统不方便,可以使用权PBNI接口来操作powerbuilder,开发数据库轻松。

[cpp]
// pbtest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"

typedef PBXEXPORT PBXRESULT (*P_PB_GetVM)(IPB_VM** vm);

int main(int argc, char* argv[])
{
IPB_Session* session;
IPB_VM* pbvm = NULL; //Load the PowerBuilder VM module
HINSTANCE hinst = LoadLibrary("pbvm90.dll");

if ( hinst== NULL)
return 0;
fprintf(stderr, "Loaded PBVM successfully\n");

P_PB_GetVM getvm = (P_PB_GetVM)GetProcAddress (hinst,"PB_GetVM");
if (getvm == NULL) return 0;
getvm(&pbvm);
if (pbvm == NULL) return 0;

LPCTSTR LibList[] = {"genapp.dll"};
if ( pbvm->CreateSession("genapp", LibList, 1, &session) != PBX_OK )
{
fprintf(stderr, "Error in CreateSession\n");
return 1;
}
fprintf(stderr, "Created session successfully\n");

pbgroup group = session->FindGroup("nvo_mult", pbgroup_userobject);
if (group == NULL)
return 0; // Now find the class nvo_mult in the group

pbclass cls = session->FindClass(group,"nvo_mult");
if (cls == NULL)
return 0; // Create an instance of the PowerBuilder object
pbobject pbobj = session->NewObject(cls);

PBCallInfo ci; // To call the class member function f_mult, // pass its signature as the last argument // to GetMethodID

pbmethodID mid = session->GetMethodID(cls, "f_mult", PBRT_FUNCTION, "III"); // Initialize call info structure based on method ID
session->InitCallInfo(cls, mid, &ci);

ci.pArgs-> GetAt(0)->SetInt(10);
ci.pArgs-> GetAt(1)->SetInt(20);

try {
session->InvokeObjectFunction(pbobj, mid, &ci); // Was PB exception thrown
if (session->HasExceptionThrown())
{ // Handle PB exception
session->ClearException();
}
} catch (...)
{ // Handle C++ exception
} // Get the return value and print it to the console
pbint ret = ci.returnValue->GetInt();
fprintf(stderr, "The product of 123 and 45 is %i\n", ret);

session->FreeCallInfo(&ci);
//delete &ci; // Release session
session->Release();


return 0;
FreeLibrary(hinst);
}

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇关于类型P和N的数据强制转换为C型.. 下一篇数组循环左移P位算法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: