您现在的位置是:首页 >

windows驱动开发 在Windows上的MySQL UDF开发应用

火烧 2022-03-23 11:45:07 1052
在Wi dow 上的MySQL UDF开发应用   曾以为Wi dow 版本的MySQL存在不能使用UDF的BUG诸提交了一个 ug报告 不过似乎发现是我搞错了 MySQL的技术支持人员给了非常完美的
windows驱动开发 在Windows上的MySQL UDF开发应用

在Windows上的MySQL UDF开发应用  

  曾以为Windows版本的MySQL存在不能使用UDF的BUG诸提交了一个bug报告 不过似乎发现是我搞错了 MySQL的技术支持人员给了非常完美的解答 同大家分享一下 下边是原文回复     用户你好 抱歉 这并不是一个bug 下面我粘贴一个以前为某个客户做的简例 假设你有了VC++ 源码分发 并且有一个正常运行的MySQL服务器     我将创建一个UDF它将一个名字:    注意:例子非常简陋 目的是让你了解该如何处理手头的UDF      打开 mysqld dsw 工作区      添加新项目到这个工作区     Project name: my_udf // 项目名称:my_udf     选择 Win Dynamic Link Library // Win 动态连接库     点击 OK     选择 An Empty DLL project // 一个空DLL项目     点击 Finish     点击 OK     添加新文件 my_udf cpp 到项目中:    #include    #include    #include    extern C {    char *my_name(UDF_INIT *initid UDF_ARGS *args char *is_null     char *error);    // 兼容C    }    char *my_name(UDF_INIT *initid UDF_ARGS *args char *is_null     char *error)    {    char * me = my name ;    return me;    // 调用此UDF将返回 my name    }     按 Ctrl+N 来创建一个新文件      选择 text 类型     File name: my_udf def file://文件名:my_udf def     按照下边的内容编辑文件     LIBRARY UDF_EXAMPLE    DESCRIPTION Example Using UDF with VC++     VERSION     EXPORTS    my_name     右击my_udf项目并选择Settings     点 C/C++ 选项卡     选择 General     添加宏 HAVE_DLOPE 到预处理器定义     选择 Preprocessor     添加头文件路径: Additional Include directories    例如: /include     按 F 去编译成 DLL      复制 my_udf dll 到环境变量path定义过的目录    比如 winntsystem      打开mysql客户端    C:mysql udfbin>mysql uroot p    Enter password:    Wele to the MySQL monitor Commands end with ; or g     Your MySQL connection id is to server version: max nt    Type help; or h for help Type c to clear the buffer     mysql> CREATE FUNCTION my_name RETURNS STRING SONAME my_udf dll ;    Query OK rows affected ( sec)    mysql> select my_name();    mysql> drop function my_name;    Query OK rows affected ( sec)    以下是MySQL技术人员的回信原文     Sorry this isn t a bug     Below I pasted a sample I did sometime ago for another user:    Ok Assuming you have VC++ and the source distribution and a server    running     I will create a UDF that returns a name:    Note: the sample is ugly but the purpose here is to show you how    to handle the UDF      Open the mysqld dsw workspace      Add New project to the workspace     Project name: my_udf     Select Win Dynamic Link Library     Click OK     Select An Empty DLL project     Click Finish     Click OK     Add a new file called my_udf cpp to the project:    #include    #include    #include    extern C {    char *my_name(UDF_INIT *initid UDF_ARGS *args char *is_null     char *error);    }    char *my_name(UDF_INIT *initid UDF_ARGS *args char *is_null     char *error)    {    char * me = my name ;    return me;    }     Type Ctrl+N for to create a new file      Select text type     File name: my_udf def     Edit the above file with the below contents:    LIBRARY UDF_EXAMPLE    DESCRIPTION Example Using UDF with VC++     VERSION     EXPORTS    my_name     Right Click the my_udf project and select Settings     Click the C/C++ tab     Select General in the Category Combo     Add the macro HAVE_DLOPEN to the PreProcessor definition     Select Preprocessor in the Category Combo     Add the include path to the text box: Additional Include directories    e g: /include     Press F for to build the DLL      Copy the my_udf dll to the environment path directory:    winntsystem for example      Start the mysql client and issue:    C:mysql udfbin>mysql uroot p    Enter password:    Wele to the MySQL monitor Commands end with ; or g     Your MySQL connection id is to server version: max nt    Type help; or h for help Type c to clear the buffer     mysql> CREATE FUNCTION my_name RETURNS STRING SONAME my_udf dll ;    Query OK rows affected ( sec)    mysql> select my_name();    mysql> drop function my_name;    Query OK rows affected ( sec) lishixinzhi/Article/program/MySQL/201311/29409  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码