Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » MobiLink - 服务器管理 » MobiLink 事件 » 同步事件

 

modify_user 连接事件

提供 MobiLink 用户名。

参数

在下表中,说明部分提供 SQL 数据类型。如果您使用 Java 或 .NET 编写脚本,则应该使用相应的数据类型。请参见SQL-Java 数据类型SQL-.NET 数据类型

SQL 脚本的参数名称

说明

顺序

s.remote_id VARCHAR(128)。MobiLink 远程 ID。只有在使用命名参数时才能引用远程 ID。 不适用

s.username

VARCHAR(128)。MobiLink 用户名。这是一个 INOUT 参数。

1

缺省操作

无。

注释

MobiLink 服务器在调用脚本时以参数形式提供用户名,用户名由 MobiLink 客户端发送。在某些情况下,您需要使用另一个用户名。此脚本用于修改在调用 MobiLink 脚本过程中使用的用户名。

用户名参数必须足够长以保存用户名。

modify_user 事件的 SQL 脚本必须作为存储过程实现。

另请参见
SQL 示例

以下示例通过使用名为 user_device 的映射表将远程数据库用户名映射到使用该设备的用户的 ID。当同一个人拥有需要使用相同的同步逻辑(根据该用户的名称或 ID)的多个远程数据库(如 PDA 和膝上型计算机)时,可以采用此技术。

以下对 MobiLink 系统过程的调用将 ModifyUser 存储过程指派给 modify_user 事件。此语法用于 SQL Anywhere 统一数据库。

CALL ml_add_connection_script(
 'ver1',
 'modify_user',
 'call ModifyUser( {ml s.username} )' )

以下 SQL 语句创建 ModifyUser 存储过程。

CREATE PROCEDURE ModifyUser( INOUT u_name varchar(128) )
BEGIN
 SELECT user_name
    INTO u_name
    FROM user_device
    WHERE device_name = u_name;
END
Java 示例

以下对 MobiLink 系统过程的调用在同步脚本版本 ver1 时将名为 modifyUser 的 Java 方法注册为 modify_user 连接事件的脚本。

CALL ml_add_java_connection_script(
   'ver1',
   'modify_user',
   'ExamplePackage.ExampleClass.modifyUser' )

以下是 Java 方法 modifyUser 示例。它从数据库获取用户 ID,然后使用该 ID 设置用户名。

public String modifyUser( 
  InOutString ioUserName )
  throws SQLException {
  Statement uidSelect = curConn.createStatement();
  ResultSet uidResult = uidSelect.executeQuery(
   "SELECT rep_id FROM SalesRep WHERE name = '" +
   ioUserName.getValue() + "' " );
  uidResult.next();
  ioUserName.setValue(
   java.lang.Integer.toString(uidResult.getInt( 1 ));
   uidResult.close();
   uidSelect.close();
  return ( null );
}
.NET 示例

以下对 MobiLink 系统过程的调用在同步脚本版本 ver1 时将名为 ModUser 的 .NET 方法注册为 modify_user 连接事件的脚本。

CALL ml_add_dnet_connection_script(
  'ver1',
  'modify_user',
  'TestScripts.Test.ModUser'
)

以下是 .NET 方法 ModUser 示例。

public string ModUser( 
  string user ) {
  return ( "SELECT rep_id FROM SalesRep WHERE name = '" + user + "' " );
}