仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1188|回复: 7
打印 上一主题 下一主题

[学习教程] 绝无经由的Windows上的MySQL UDF开辟

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 20:08:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
人力成本上的节省,MySQL的用户Spacemonkey实验室的首席执行官MitchPirtle如此表示:“维护MySQL使得你不需要一个年薪15万美元的DBA。曾觉得Windows版本的MySQL存在不克不及利用UDF的BUG诸提交了一个bug呈报。不外
仿佛发明是我弄错了,MySQL的手艺撑持职员给了十分完善的解答,同人人分享
一下。下边是原文复兴:)
Sorrythisisntabug.
BelowIpastedasampleIdidsometimeagoforanotheruser:
Ok.AssumingyouhaveVC++andthesourcedistributionandaserver
running,
IwillcreateaUDFthatreturnsaname:
Note:thesampleisugly,butthepurposehereistoshowyouhow
tohandletheUDF.
-Openthemysqld.dswworkspace.
-AddNewPRojecttotheworkspace
-Projectname:my_udf
-SelectWin32Dynamic-LinkLibrary
-ClickOK
-SelectAnEmptyDLLproject
-ClickFinish
-ClickOK
-Addanewfilecalledmy_udf.cpptotheproject:
#include<stdlib.h>
#include<winsock.h>
#include<mysql.h>
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="myname";
returnme;
}
-TypeCtrl+Nfortocreateanewfile.
-Selecttexttype
-Filename:my_udf.def
-Edittheabovefilewiththebelowcontents:
LIBRARYUDF_EXAMPLE
DESCRipTIONExampleUsingUDFwithVC++
VERSION1.0
EXPORTS
my_name
-RightClickthemy_udfprojectandselectSettings
-ClicktheC/C++tab
-SelectGeneralintheCategoryCombo
-AddthemacroHAVE_DLOPENtothePreProcessordefinition
-SelectPreprocessorintheCategoryCombo
-Addtheincludepathtothetextbox:AdditionalIncludedirectories
e.g:../include
-PressF7fortobuildtheDLL.
-Copythemy_udf.dlltotheenvironmentpathdirectory:
winntsystem32forexample.
-Startthemysqlclientandissue:
C:mysql-udfin>mysql-uroot-p
EnterpassWord:
WelcometotheMySQLmonitor.Commandsendwith;org.
YourMySQLconnectionidis2toserverversion:3.23.52-max-nt
Typehelp;orhforhelp.Typectoclearthebuffer.
mysql>CREATEFUNCTIONmy_nameRETURNSSTRINGSONAME"my_udf.dll";
QueryOK,0rowsaffected(0.08sec)
mysql>selectmy_name();
mysql>dropfunctionmy_name;
QueryOK,0rowsaffected(0.00sec)
多此一举的作下扼要中文申明。
抱愧,这并非一个bug。上面我粘贴一个之前为某个客户做的简例,假定你有了
VC++,源码分发,而且有一个一般运转的MySQL服务器。
我将创立一个UDF它将一个名字:
注重:例子十分大略,目标是让你懂得该怎样处置手头的UDF。
-翻开mysqld.dsw事情区。
-增加新项目到这个事情区
-Projectname:my_udf//项目称号:my_udf
-选择Win32Dynamic-LinkLibrary//Win32静态毗连库
-点击OK
-选择AnEmptyDLLproject//一个空DLL项目
-点击Finish
-点击OK
-增加新文件my_udf.cpp到项目中:
#include<stdlib.h>
#include<winsock.h>
#include<mysql.h>
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="myname";
returnme;
//挪用此UDF将前往myname
}
-按Ctrl+N来创立一个新文件。
-选择text范例
-Filename:my_udf.deffile://文件名:my_udf.def
-依照下边的内容编纂文件。
LIBRARYUDF_EXAMPLE
DESCRIPTIONExampleUsingUDFwithVC++
VERSION1.0
EXPORTS
my_name
-右击my_udf项目并选择Settings
-点C/C++选项卡
-选择General
-增加宏HAVE_DLOPE到预处置器界说
-选择Preprocessor
-增加头文件路径:AdditionalIncludedirectories
比方:../include
-按F7往编译成DLL.
-复制my_udf.dll到情况变量path界说过的目次
好比winntsystem32。
-翻开mysql客户端
C:mysql-udfin>mysql-uroot-p
Enterpassword:
WelcometotheMySQLmonitor.Commandsendwith;org.
YourMySQLconnectionidis2toserverversion:3.23.52-max-nt
Typehelp;orhforhelp.Typectoclearthebuffer.
mysql>CREATEFUNCTIONmy_nameRETURNSSTRINGSONAME"my_udf.dll";
QueryOK,0rowsaffected(0.08sec)
mysql>selectmy_name();
mysql>dropfunctionmy_name;
QueryOK,0rowsaffected(0.00sec)

ok!接待人人来MySQL板交换UDF计划履历!我的电子邮件是HeartIcy@163.com
手机13706410308。同时,我们MySQL板筹办入手下手体系化延续性翻译MySQL文档,
但愿人人多多撑持配合完成这一项目。
HeartIcy
2003年5月17日于中国济南

如果你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL。然而,如果你的项目不是在GPL协议下的话,你必须为使用MySQL来支付许可费用,或者你可能因为这个因素而将你的项目改为遵循GPL。
分手快乐 该用户已被删除
沙发
发表于 2015-1-18 18:09:46 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
莫相离 该用户已被删除
板凳
发表于 2015-1-25 17:55:00 | 只看该作者
以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-3 12:36:34 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
精灵巫婆 该用户已被删除
5#
发表于 2015-2-9 01:13:47 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
admin 该用户已被删除
6#
发表于 2015-2-26 16:44:03 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
蒙在股里 该用户已被删除
7#
发表于 2015-3-8 16:15:20 | 只看该作者
学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!
第二个灵魂 该用户已被删除
8#
发表于 2015-3-16 05:06:23 | 只看该作者
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 03:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表