当前位置: 代码迷 >> PB >> PB各种数据联接接口的优缺点
  详细解决方案

PB各种数据联接接口的优缺点

热度:28   发布时间:2016-04-29 07:46:37.0
PB各种数据连接接口的优缺点?
PB提供了很多数据库连接的接口还有PB自己专有的连接(我这里就说是专连吧)。
我想知道他们之间有什么区别。特别是专连和其他的连接,在连接速度上、稳定性方面、安装方面等等。

我手上的一个项目用到了专连和ODBC连接两种方式,现在我想舍弃一种。或者干脆用第三种,谢谢各位大哥大姐给予小弟宝贵意见。
------解决方案--------------------
有专用,还是用专用比较好,ODBC还需要配置,发布不方便,专用的和执行文件拷在一起就行了.
连SQL SERVER OLE DB也是比较好的方法.
------解决方案--------------------
同意宝宝传奇。情况就是这样的。
------解决方案--------------------
学习了....
------解决方案--------------------
是传sqlca.dbhandle(),还是使用pbni传transaction呢?


------解决方案--------------------
引用:
现在我们公司的情况是这样的,产品是PB开发的,而二次开发式VC做的。现在VC有一个接口我们需要传递transaction指针给他。如果用专用连接,VC好像无法识别。
请赐教。

如果真是那样,我感觉oledb还是要比odbc强
------解决方案--------------------
这也试了一下。
VOID FAR WINAPI PASCAL dblisten(LONG dbhandle)
{

Lda_Def FAR *pLda = (Lda_Def FAR *)dbhandle;
Cda_Def FAR *pCda = (Cda_Def FAR *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(Cda_Def));
if(!pCda )
return;
__try
{

if(!oopen(pCda, pLda,NULL, -1, -1, NULL, -1)==0)//这里一直不成功
return;
if(oparse(pCda,(OraText *)"select count(1) from z_scanning", -1, 0, 1))
{
if (pCda->rpc)
::MessageBox(0,"1","1",MB_OK);
else
::MessageBox(0,"2","2",MB_OK);
}
oclose(pCda);

}
__finally
{
HeapFree(GetProcessHeap(), 0,pCda);
}
}
------解决方案--------------------
头文件:
#pragma warning(disable : 4786)
#include <windows.h>
#include <pbext.h>
#include <richedit.h>
#include <commctrl.h>
#include <math.h>
#include <string>
extern "C"
{
#include <oratypes.h>
#include <ociapr.h>
/* demo constants and structs */
#include <ocidem.h>
}
#pragma comment(lib,"oci.lib")
------解决方案--------------------
传参重连就可以:
VOID FAR WINAPI PASCAL dblisten(OraText *username,OraText *password)
{

Lda_Def FAR pLda;// = (Lda_Def FAR *)dbhandle;
Cda_Def FAR pCda;// =(Cda_Def FAR *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(Cda_Def));//(Cda_Def FAR *)GlobalAlloc(GMEM_MOVEABLE,sizeof(Cda_Def));
ub1 hda[HDA_SIZE];
sword rowcount;
#define  DEFER_PARSE        1
#define  VERSION_7          2
__try
{
memset(hda,0,HDA_SIZE);
if(olog(&pLda,hda,username,-1,password,-1,NULL,-1,OCI_LM_DEF) == 0)
{
if(oopen(&pCda,&pLda,NULL, -1, -1, NULL, -1) == 0)
{
if(oparse(&pCda,(OraText *)"select count(1) from z_scanning", -1, DEFER_PARSE, (ub4) VERSION_7) == 0)
{
if (odefin(&pCda, 1, (ub1 *) &rowcount, (sword) sizeof(sword),(sword) INT_TYPE,(sword) -1, (sb2 *) 0, (text *) 0, -1, -1,(ub2 *) 0, (ub2 *) 0)==0)
  相关解决方案