兰色精灵 发表于 2015-1-16 20:08:45

绝无经由的Windows上的MySQL UDF开辟

人力成本上的节省,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也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..

精灵巫婆 发表于 2015-2-9 01:13:47

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

admin 发表于 2015-2-26 16:44:03

SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。

蒙在股里 发表于 2015-3-8 16:15:20

学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!

第二个灵魂 发表于 2015-3-16 05:06:23

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
页: [1]
查看完整版本: 绝无经由的Windows上的MySQL UDF开辟