当前位置: 主页 > 服务器技术 > Ftp服务器 > 在Xlight FTP服务器使用数据库存储过程

在Xlight FTP服务器使用数据库存储过程

时间:2010-6-28来源:互联网 点击:

许多数据库系统支持存储过程. 我们使用MySQL数据库作为例子. 使用MySQL之前, 你必须下载最新的 MySQL ODBC Driver - 3.51.16 或者更高版本. 否则,因为MySQL的Bug #27544, 第二次SQL查询将会失败. 其他类型的数据库,你也最好升级数据库相应的ODBC Driver到最新版本.

在使用存储过程之前必须设置数据库ODBC数据源. 你可以参考这里的设置步骤.

在本例中, 我们有一个表"account_info"在这个数据库里. 此表是其他数据库应用程序所使用, 它存储用户名, 口令和用户发表的文章数目(posts). 我们也创建了另一个表"acct_param_table", 它是Xlight FTP服务器中的一张数据库表, 用于存储用户参数. 我们没有创建Xlight FTP服务器的主要数据库表"acct_table ", 因为我们将使用存储过程模拟其功能.

account_info
Account Password Posts
test1 test1_password 20
test2 test2_password 120
test3 test3_password 300
acct_param_table
param_index max_down_speed
0 10
1 50
2 100

下面代码是范例MySQL存储过程test () ,它接受2个参数, username_in和password_in.

DELIMITER $$
DROP PROCEDURE IF EXISTS test $$
CREATE PROCEDURE test(username_in VARCHAR(65), password_in VARCHAR(65))
main: BEGIN
  DECLARE user_name VARCHAR(65);
  DECLARE home_path VARCHAR(255);
  DECLARE home_perm VARCHAR(10);
  DECLARE num_posts, param_index INT(10);

  SELECT `account`, `Posts`
    INTO user_name, num_posts
    FROM account_info
    WHERE account = username_in AND password = password_in;

  IF user_name != username_in THEN
    LEAVE main;
  END IF;

  SET home_perm = ‘LRS‘;

  IF num_posts > 100 THEN
    SET param_index = 1;
    SET home_path = ‘c:\\folder_1‘;
  ELSEIF num_posts > 200 THEN
    SET param_index = 2;
    SET home_path = ‘c:\\folder_2‘;
  ELSE
    SET param_index = 0;
    SET home_path = ‘c:\\folder_0‘;
  END IF;

  SELECT home_path,home_perm,param_index;

END $$
DELIMITER ;

存储过程test()接受明码文本口令的password_in参数. 你必须为虚拟服务器配置ODBC使用明码文本口令, 如下图所示


上面的存储过程test()将检查数据库account_info验证用户, 如果用户名或口令不符合, 将没有结果集返回Xlight FTP服务器,这个用户的验证将失败.

在成功的用户认证以后, 这个程序将根据用户在"account_info"表里发表的文章数目(posts), 返回不同的param_index, home_path值. 最终test()程序将用语句"SELECT home_path,home_perm,param_index;"返回结果集到Xlight FTP服务器.

因为test()程序替换"acct_table"的功能, 您应该放置"call test(‘$USER‘,‘$PASS‘);"在选项"替换第一条内部SQL查询语句"中,如下图所示.


$USER和$PASS是预定义参数, Xlight FTP服务期将用登录用户实际的用户名和密码自动替换它们. 如果需要查询支持的预定义参数, 请查阅帮助手册的[全局选项]->[高级]这一节.

如果您想要解决数据库查询的问题,你可以选择这个选项"记录SQL查询错误到系统错误日志",你将能在系统错误日志中看到SQL查询错误.

站长资讯网
. TAG: Xlight FTP服务器 数据库 存储过程
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言