python版本采用的3.4.10版本所以支持xp
pb局部动态库函数定义
type prototypes
SUBROUTINE PyPB_evalPyScript(string pyscript) library "easypj.dll"
end prototypes
创建一个Python文件testSQLCA.py,代码如下
import pb
def PyPB_SQLCA():
return pb.Obj("sqlca")
def PyPB_Easypj():
return pb.Obj("easypj")
epj = PyPB_Easypj()
SQLCA = PyPB_SQLCA()
SQLCA.DBMS = "MSS Microsoft SQL Server 6.x"
SQLCA.Database = "master"
SQLCA.LogPass = "sa"
SQLCA.ServerName = "server2021"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
sqlerr = epj.db_connect(SQLCA)
if ''!=sqlerr:
raise Exception(sqlerr)
pb.Obj().MessageBox('','数据库连接成功')
pb项目中调用
PyPB_evalPyScript("import testSQLCA")
实现细节
1 获取全局变量sqlca的方法
POB_DATA pob = ob_get_global_var_data(_obThis, (LPTSTR)"sqlca");
2 获取自定义对象easypj的一个实例
OB_DATA d = { 0 };
OB_CLASS_HNDL och = { 0 };
OB_GROUP_HNDL ogh = { 0 }, rtogh = { 0 };
och = ob_global_reference(_obThis, _T("easypj"), &ogh);
if (och.group_hndl == 0 || ogh == 65535) return NULL;
POB_RUNTIME_INST pri = (POB_RUNTIME_INST)ob_create_obinst(_obThis, och);
ob_set_data_rtinst(&d, pri, och.class_id, 1);
依赖文件目录
easypj.dll、Libjcc.dll、ntwdblib.dll、python.zip、testSQLCA.py
pb8或者pb9自行选择
pbweb80.exe、pbvm80.dll、pbmss80.dll、pbdwe80.dll
pbweb90.exe、pbvm90.dll、pbmss90.dll、pbdwe90.dll
直接测试testSQLCA.py代码的cmd命令
pbweb80.exe -c "import testSQLCA"