Sybase EAServer
的文章也有一些,很少提及到开发中的一些细节问题。本人从事
JaguarCts
开发不久,遇到了许多细节问题,想来刚从事
JaguarCts
开发者也会遇上,以做参考,另则心中还存有许多问题,故撰此文,起抛砖引玉之效
,
望
JaguarCts
高手能释疑,深表感谢。
一、系统配置部分:
1 、 运行环境:
WIN2000 SERVER 版, SP2 补丁, P3850CPU , PB8.0Beta+EAServer3.6.1 。
2 、 运行环境安装注意事项:
在开发环境中 JaguarCts 服务器不要安装成 NT 服务,因为开发中经常修改 JaguarCts 组件,会出现 “OBJECT CAN‘T SAVE” 的错误,若不是 NT 服务,用 Jaguar Server(debug) 。出现此类错误后重启动 J aguar Server(debug) 即可。若安装成 NT 服务可用以下指令删除:
serverstart servicename -remove (serivename 是 NT 服务中 Jaguar 的服务名 )
WIN2000 SERVER 版一定要打补丁,其实 SP1 也可,否则无法生成代理( Proxy )。
3 、 启动 Jaguar 管理器(图(一))
( A ) JaguarMagager 菜单 Tool/Connect/ Jaguar Manager 。
( B ) 点 Profile Manager 可以新增一个 Profile 。
( C ) 在 User Name 中输入 JAGADMIN (系统)
( D ) PassWord 默认为空。
( E ) Host Name 可以是 LocalHost 。(如果你有一定的经验,它可以改为你的机器名,但在 Connect 成功后要进去修改 Listener 中各端口的主机名。)
4 、 启动安全管理器(图(二))
( A ) JaguarManager 菜单 Tool/Connect ecurity Manager 。
( B ) PIN 默认密码是 “SYBASE”
5 、 修改 Jagadmin 的密码
( A ) 当 3 连接成功后,在 JaguarManager 中双击 Servers, 显示当前所有服务,选一服务后击右键,在右键菜单中选 server property 打开属性面板。
( B ) 在属性面板中选 Security 改密码。
6 、 管理连接缓冲
( A ) 在 JaguarManager 中双击 Servers, 在列表中选一个 Server 。
( B ) 选 Install Connection Caches
( C ) 右键,在弹出的菜单上选 “Create and Install a New Connection Cache”
( D ) 在弹出的窗口中输入 Connection Cache 名。
( E ) 确定后就进入了 Connection Cache 配置 面板。
( F ) 本文以配置 SQLSERVER 为例。在 General 选项卡中配置: Server Name 为 SqlServer 的服务名。 User Name 为登录 SqlServer 的用户 ID ,输入 PassWord 。在 Driver 选项卡中选 ODBC , DLL OR CLASS NAME 为 ODBC32.DLL 。 PING 一下试试。
( G ) 若 PING 通不过,你就得看一下本文前面( 3 )提到的 HostName 你输入的是什么,若 LocalHost 就不行,改为你的机器名。
二、开发应用部分
A 、服务端:
1 、 新建 EAServer Profile 如下图。 Server Name 即计算机名。 Port Number 为 9000 , Login Name 为 Jagadmin 。
2 、 à TARGET---- à 在 NEW----EAServer Component 开始向导
3 、 Implement New à Next- à 应用名、库文件存放 - à Next- à Next- à PBObjectName(n_cst_base) à InterFace--EAServer à Component Name--EAServer Pakeage à Profile-- Instance à Component Type(stadard component)-- à Name( 组件以包为单位,新增一个包或选一个存在的包 )-- Transaction Supported Option(Not à Pooling Options(Supported)-- Other à Interface Options(Next)-- à Supported)-- Finish à Next-- à Next-- à Project(Next)-- à Options( 全选 )--
4 、 打开刚创建的组件 N_cst_base ,在 Constructor 事件中:
SQLCA.DBMS = "MSS Microsoft SQL Server 6.x"
SQLCA.Database = "Jaguar_2001"
SQLCA.ServerName = "jaguarcts"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
CONNECT USING SQLCA ;
IF SQLCA.SQLCODE = -1 THEN
messagebox(“system”," 数据库连接失败 !"+SQLCA.SQLERRTEXT)
END IF
5 、 在 N_cst_base 的 Destructor 事件中:
Disconnect Using SQLCA ;
6 、 在 N_cst_basek 中新增一个对象函数:
of_user_login(string as_userid,string as_password) return integer
//
integer li_return
SELECT count(*) INTO :li_return FROM jag001 WHERE jag0101 = : as_userid and jag0102 = : as_password ;
RETURN li_return
Jag001 表的字段: jag0101(varchar(20))—jag0102(varchar(20))
7 、 生成组件代理对象
à PROJECT---- à NEW--EAServer Proxy Wizard 一直 NEXT ,值得注意的是出现一个 TreeView 时、让你选一个包(即在 3 中创建的包),下一步是选一个代理库(可以选存在的 PBL ,也可以新增一个 PBL ), NEXT 后是 Deployment Actions, 要选三(代理对象名 = 包名 + 组件名)
8 、 若不出意外,代理对象就生成了。
B 、客户端:
1 、 新建一个应用。
2 、 新建一个连接对象
Connection Object Wizard 其中值得注意的是 Connectivity à PBObject-- à NEW-- Options(Requires EAServer Connection) ; Pakage Name 即 3 中创建的包。 Connection Object 名可以默认,也可以自已输入; resource of connect information 可以任选一种。
3 、 在新应用的 open 事件:
n_cst_connect inv_connect_srv //2 创建的连接对象声明
Jaguar_2001_n_cst_base inv_login_srv // 代理对象声明
integer li_return
inv_connect_srv = CREATE n_cst_connect
li_return = inv_connect_srv.ConnectToServer( )
TRY // 创建代理对象 inv_login_srv
li_return =
inv_connect_srv.CreateInstance(inv_login_srv,"Jaguar_2001/n_cst_base")
CATCH (cts_pbuserexception uae)
li_return = 999
END TRY
IF li_return <> 0 THEN
MessageBox("Error Info", "ErrorCode= " + string(inv_connect_srv.ErrCode) + "~nErrText= " + inv_connect_srv.ErrText)
END IF
TRY // 进行登录,表中有一行数据( xzh2000,000000 )
li_return = inv_login_srv.of_user_logon(‘xzh2000’,’000000’)
CATCH (cts_pbuserexception uae1)
li_return = 999
END TRY
If li_return = 1 then
Messagebox(“system”,”OK”)
Else
Messagebox(“system”,”CANCEL”)
End if
一、系统配置部分:
1 、 运行环境:
WIN2000 SERVER 版, SP2 补丁, P3850CPU , PB8.0Beta+EAServer3.6.1 。
2 、 运行环境安装注意事项:
在开发环境中 JaguarCts 服务器不要安装成 NT 服务,因为开发中经常修改 JaguarCts 组件,会出现 “OBJECT CAN‘T SAVE” 的错误,若不是 NT 服务,用 Jaguar Server(debug) 。出现此类错误后重启动 J aguar Server(debug) 即可。若安装成 NT 服务可用以下指令删除:
serverstart servicename -remove (serivename 是 NT 服务中 Jaguar 的服务名 )
WIN2000 SERVER 版一定要打补丁,其实 SP1 也可,否则无法生成代理( Proxy )。
3 、 启动 Jaguar 管理器(图(一))
( A ) JaguarMagager 菜单 Tool/Connect/ Jaguar Manager 。
( B ) 点 Profile Manager 可以新增一个 Profile 。
( C ) 在 User Name 中输入 JAGADMIN (系统)
( D ) PassWord 默认为空。
( E ) Host Name 可以是 LocalHost 。(如果你有一定的经验,它可以改为你的机器名,但在 Connect 成功后要进去修改 Listener 中各端口的主机名。)
4 、 启动安全管理器(图(二))
( A ) JaguarManager 菜单 Tool/Connect ecurity Manager 。
( B ) PIN 默认密码是 “SYBASE”
5 、 修改 Jagadmin 的密码
( A ) 当 3 连接成功后,在 JaguarManager 中双击 Servers, 显示当前所有服务,选一服务后击右键,在右键菜单中选 server property 打开属性面板。
( B ) 在属性面板中选 Security 改密码。
6 、 管理连接缓冲
( A ) 在 JaguarManager 中双击 Servers, 在列表中选一个 Server 。
( B ) 选 Install Connection Caches
( C ) 右键,在弹出的菜单上选 “Create and Install a New Connection Cache”
( D ) 在弹出的窗口中输入 Connection Cache 名。
( E ) 确定后就进入了 Connection Cache 配置 面板。
( F ) 本文以配置 SQLSERVER 为例。在 General 选项卡中配置: Server Name 为 SqlServer 的服务名。 User Name 为登录 SqlServer 的用户 ID ,输入 PassWord 。在 Driver 选项卡中选 ODBC , DLL OR CLASS NAME 为 ODBC32.DLL 。 PING 一下试试。
( G ) 若 PING 通不过,你就得看一下本文前面( 3 )提到的 HostName 你输入的是什么,若 LocalHost 就不行,改为你的机器名。
二、开发应用部分
A 、服务端:
1 、 新建 EAServer Profile 如下图。 Server Name 即计算机名。 Port Number 为 9000 , Login Name 为 Jagadmin 。
2 、 à TARGET---- à 在 NEW----EAServer Component 开始向导
3 、 Implement New à Next- à 应用名、库文件存放 - à Next- à Next- à PBObjectName(n_cst_base) à InterFace--EAServer à Component Name--EAServer Pakeage à Profile-- Instance à Component Type(stadard component)-- à Name( 组件以包为单位,新增一个包或选一个存在的包 )-- Transaction Supported Option(Not à Pooling Options(Supported)-- Other à Interface Options(Next)-- à Supported)-- Finish à Next-- à Next-- à Project(Next)-- à Options( 全选 )--
4 、 打开刚创建的组件 N_cst_base ,在 Constructor 事件中:
SQLCA.DBMS = "MSS Microsoft SQL Server 6.x"
SQLCA.Database = "Jaguar_2001"
SQLCA.ServerName = "jaguarcts"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
CONNECT USING SQLCA ;
IF SQLCA.SQLCODE = -1 THEN
messagebox(“system”," 数据库连接失败 !"+SQLCA.SQLERRTEXT)
END IF
5 、 在 N_cst_base 的 Destructor 事件中:
Disconnect Using SQLCA ;
6 、 在 N_cst_basek 中新增一个对象函数:
of_user_login(string as_userid,string as_password) return integer
//
integer li_return
SELECT count(*) INTO :li_return FROM jag001 WHERE jag0101 = : as_userid and jag0102 = : as_password ;
RETURN li_return
Jag001 表的字段: jag0101(varchar(20))—jag0102(varchar(20))
7 、 生成组件代理对象
à PROJECT---- à NEW--EAServer Proxy Wizard 一直 NEXT ,值得注意的是出现一个 TreeView 时、让你选一个包(即在 3 中创建的包),下一步是选一个代理库(可以选存在的 PBL ,也可以新增一个 PBL ), NEXT 后是 Deployment Actions, 要选三(代理对象名 = 包名 + 组件名)
8 、 若不出意外,代理对象就生成了。
B 、客户端:
1 、 新建一个应用。
2 、 新建一个连接对象
Connection Object Wizard 其中值得注意的是 Connectivity à PBObject-- à NEW-- Options(Requires EAServer Connection) ; Pakage Name 即 3 中创建的包。 Connection Object 名可以默认,也可以自已输入; resource of connect information 可以任选一种。
3 、 在新应用的 open 事件:
n_cst_connect inv_connect_srv //2 创建的连接对象声明
Jaguar_2001_n_cst_base inv_login_srv // 代理对象声明
integer li_return
inv_connect_srv = CREATE n_cst_connect
li_return = inv_connect_srv.ConnectToServer( )
TRY // 创建代理对象 inv_login_srv
li_return =
inv_connect_srv.CreateInstance(inv_login_srv,"Jaguar_2001/n_cst_base")
CATCH (cts_pbuserexception uae)
li_return = 999
END TRY
IF li_return <> 0 THEN
MessageBox("Error Info", "ErrorCode= " + string(inv_connect_srv.ErrCode) + "~nErrText= " + inv_connect_srv.ErrText)
END IF
TRY // 进行登录,表中有一行数据( xzh2000,000000 )
li_return = inv_login_srv.of_user_logon(‘xzh2000’,’000000’)
CATCH (cts_pbuserexception uae1)
li_return = 999
END TRY
If li_return = 1 then
Messagebox(“system”,”OK”)
Else
Messagebox(“system”,”CANCEL”)
End if