数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

PB环境下分布式应用程序的开发(二)


发布日期:2020年08月05日
 
PB环境下分布式应用程序的开发(二)

实例

先看如下两个图图二表示DTS端图三表示Client端其中DTS已经建立了与数据库服务器的连接数据窗口中显示的是所有的数据Client并没有数据库接口而是通过DTS间接的访问数据在数据窗口中显示的是所有男性职工

图(二)

图(三)

该程序的大部分源代码如下

DTS端

首先定义一个全局变量Transport mytrans;

开始监听按钮中输入如下代码

long ll

mytrans=create transport

mytransdriver=winsock

mytransapplication= //端口号

mytranslocation= //本地服务器

ll=mytranslisten() //开始监听

if ll<> then

messagebox(string(mytranserrcode)mytranserrtext)

return

end if

serversettranspool() //设置连接缓沖注意server为应用的名称

thistext=正在监听中

thisenabled=false

结束监听按钮中输入如下代码

mytransstoplistening() //结束监听

destroy mytrans

cb_text=开始监听

cb_enabled=true

建立一个NVO

利用PB的User Objects画板建立一个classàcustom的用户对象建立用户对象函数nvoretrieve(ref blob bufferstring filter) returns long函数体如下

long ll

SQLCADBMS = ODBC

SQLCAAutoCommit = False

SQLCADBParm = Connectstring=DSN=person

connect; //建立与数据库的连接

datastore datastore_buffer

datastore_buffer=create datastore

datastore_bufferdataobject=dw_person //dw_person是一个数据窗口

datastore_buffersettransobject(sqlca)

datastore_bufferretrieve()

datastore_buffersetfilter(filter)

datastore_bufferfilter()

ll=datastore_buffergetfullstate(buffer) //函数getfullstate()和setfullstate()常用于分布式应用程序

disconnect;

return ll

建立NVO的代理对象

在用户对象上点鼠标右健选择Set Proxy Name输入NVO_dw保存用户对象

打开Library画板NVO_dw输出为文件以便在客户端导入该代理

Client端

打开Library画板将刚才输出的文件导入

定义两个全局变量

connection myconn

nvo_dw proxy_dw

连接按钮中输入如下代码

long ll

myconn=create connection

myconndriver=winsock

myconnapplication= //必须和DTS端的端口号一致

myconnlocation= //DTS的IP地址

ll=myconnconnecttoserver() //建立连接

if ll<> then

messagebox(string(myconnerrcode)myconnerrtext)

return

end if

thistext=正在连接中

thisenabled=false

cb_enabled=true

cb_enabled=true

断开按钮中输入如下代码

myconndisconnectserver() //断开连接

destroy myconn

cb_enabled=true

cb_text=连接

cb_enabled=false

thisenabled=false

查询按钮中输入如下代码

long result

blob buffer

myconncreateinstance(proxy_dw) //建立代理对象

result=proxy_dwnvoretrieve(buffersex=) //检索所有男性职工

result=dw_setfullstate(buffer) //dw_是一个数据窗口控件

小结及注意事项

以上程序在WINDOWSPB环境中调试通过在客户数量很多数据量很大的情况下查询的速度会快很多

编程时注意如果NVO的函数体发生变化则无须重新生成代理如果NVO的函数接口发生变化则必须重新生成它的代理并将它输入到客户端中

NVO对象是一个不可视对象只能通过函数调用的方法使用它不可将它作为一个控件放在窗口上

上一篇:SQL注入防御:用三种策略应对SQL注入攻击[1]

下一篇:怎样把SQL中的数据输出到HTML页面[2]