因胸联盟 发表于 2015-1-16 22:46:33

MYSQL网站制作之FUNCky 的利用

能够以较低的成本向客户提供IT所有权,当节约成本成为客户最高优先级时,解决方案提供商可以向更多的客户同时提供服务。虽然有许多来自RDBMS固有的局限性。FUNCky的利用
张健姿01-6-26下战书04:31:30

FUNCky是一个PowerBuilder应用程序库,它提供了16位和32位两种使用库,其中包含了年夜量的底层函数,免往了开发人员亲自动手使用C语言编写动态链接库来处理很多常用的诸如文件操作、字符串操作、位操作等功能。使用Funcky能年夜年夜提高开发效率。本篇简单讲述一下如何在PowerBuilder中使用Funcky。将FUNCky加到您的应用中FUNCky提供了16位和32位的运行库Funcky.dll、Funcky16.pbl和Funcky32.dll、Funcky32.pbl,应用程序调用的函数或过程都在该动态链接库和PBL文件中。安装完FUNCky后,两个动态链接库被拷贝到Windows的System目录下,两个PBL则在安装的目录下。使用时将用到的函数在应用的GlobalExternalFunction或LocalExternalFunction中作相应的声明即可,如需使用全部函数则可以将整个PBL文件加到您应用的搜索库中。函数原型定义可以从相应函数帮助中获得。除匡助文件中提供的函数以外,在funcky.dll中还有其它的一些未公开的函数在Funcky.pbl中被调用,这些函数用户也可以使用。使用Funcky要注意的几点・在应用中,只将使到的函数加到函数原型声明中往,不要声明过多的函数原形,否则运转时系统可能会报函数原型不匹配错误;・如只需使用少量函数,用户尽量不要将FUNCky.pbl加到应用中使用,因为那将需要年夜量的函数原型声明才能编译通过;・某些函数原型是以"_"开头的定义,这些函数都在Funcky.pbl中有定义,使用者可以间接使用该函数,将Funcky.pbl中的代码直接拷贝到自己的pbl中,或自己编写相关的PowerBuilder函数。Funcky函数分类Funcky一共提供了12类的函数:・位操作函数・块和内存操作函数・数据转换函数・DBF文件访问函数・磁盘访问函数・DOS环境函数・日期函数・低级文件操作函数・转换函数・字符串操作函数・系统资源函数・时间操作函数举例说明下面我们举几个例子,说明一下这些函数的使用。我们侧重介绍的是DBF文件访问,块操作和内存操作、低级文件操作等这几类函数,这是年夜家在应用中经常要用到的,而PowerBuilder本身却不提供的操作。1.我们经常在PowerBuilder应用中遇到有关图象存储和显示的问题,而在这方面,PowerBuilder本身的处理功能较弱,在实际应用中经常无法达到用户的请求。我们可以借助Funcky的函数来处理图象文件。例如在使用中需要存储、查询、显示和打印照片,一般开发职员使用OLE嵌进的方法来做,但是如果获得的每一幅照片的规格不完全一样,这样显示和打印的效果就很差,采用这种方法制作通行证或身份证上的照片几乎是不可用的。解决这一问题,所使用的较简单的方法是,以bitmap格式在数据库中存放图象数据,显示/打印时,将数据取出在本地保存成为临时文件,根据图象的尺寸进行等比例缩放显示在图象控件上,这样既能达到界面的要求,又能获得高质量的图象。我们可以借助Funcky函数来解决这样几个问题:obitmap图象文件存储效率不高,在数据库中占据的空间过年夜,可在存进前使用fcompress函数对图象文件进行压缩:函数声明:FUNCTIONlongfcompress(strings,stringd)LIBRARY"FUNCky32.DLL"//界说紧缩函数原型SCRIPT:retcode=fcompress(ls_path,"_tmp.tmp")//紧缩文件choosecaseretcode...//反省前往值Endchoose...//将紧缩后的文件保留到数据库中fdcompress的压缩效率不高,但速度很快,还是值得使用的。obitmap图象的宽和高保存在该文件的第18和第22个字节中,不用Funcky函数很难读出这两个字节的信息。下面一段程序是解压缩和计算BMP图象的宽和高函数声明://界说从二进制数据中读取一个长整形函数原型FUNCTIONlong_blob2long(refblobb,uinto)LIBRARY"FUNCky32.DLL"//界说解紧缩函数原型FUNCTIONlongfdcompress(strings,stringd)LIBRARY"FUNCky32.DLL"SCRIPT:...//从数据库中将数据掏出保留在文件$fgd.bmp中status=fdcompress("$fgd.bmp","_fgd.bmp")//解紧缩choosecasestatus...//反省前往值Endchoose...//将_fgd.bmp读进blob变量picll_width=_blob2long(pic,18)//读图像宽度ll_height=_blob2long(pic,22)//读图像高度//依据指定的宽和高盘算缩放比例bili_width=integer(sle_width.text)/ll_widthbili_height=integer(sle_height.text)/ll_height//失掉显现宽度和高度p_width=ll_width*min(bili_width,bili_height)p_height=ll_height*min(bili_width,bili_height)我们可以看到Funcky函数的使用非常简单,能够轻松做到在PowerBuilder中很难实现的操作。2.在应用中您可能会遇到直接读取DBF文件的情况,处理这类问题的方法一般有两种经典的方法:一是使用数据窗口读DBF文件,二是指定一个磁盘目录作为数据区,用ODBC连接这个目录,使用时规定用户必须将DBF文件拷贝到这个目录下。但是这两种办法都缺乏灵活性,而在Funcky中却提供了直接读DBF文件的函数。在Funcky32.pbl中有一个dbffieldget()函数可以获取该DBF文件的字段名称。不过根据我们“尽量不使用Funcky32.pbl”的原则,自己手工编写一个实现该功能的代码。定义外部函数:FUNCTIONlongdbfOpen(stringf,into)LIBRARY"FUNCky32.DLL"FUNCTIONbooleandbfEof(longd)LIBRARY"FUNCky32.DLL"FUNCTIONintdbfClose(longd)LIBRARY"FUNCky32.DLL"FUNCTIONlongdbfSkip(longd,longc)LIBRARY"FUNCky32.DLL"FUNCTIONuintdbfFieldSize(longd,intp)LIBRARY"FUNCky32.DLL"SUBROUTINE_dbfFieldGet(longd,intp,refstringb)LIBRARY"FUNCky32.DLL"FUNCTIONintdbfFieldPos(longd,stringn)LIBRARY"FUNCky32.DLL"SCRIPT://以读写和回绝其他用户写的体例翻开dbf数据库dowhile1=1dbf=dbfopen(ls_file,2+32)ifdbf0thenexitendifloop//读dbf数据//ii_xx_count是必要读的dbf字段的总数//is_dbf[]是字段称号数组dowhilenotdbfeof(dbf)fori=1toii_xx_countp=dbffieldpos(dbf,upper(is_dbf))//猎取字段的地位ls_tmp=space(dbffieldsize(dbf,p)+1)//依据字段的巨细初始化寄存数据的变量_dbffieldget(dbf,p,ls_tmp)//将数据读进到ls_tmp中nextdbfskip(dbf,1)//使dbf操纵指向下一笔记录loopdbfclose(dbf)//封闭翻开的dbf文件这样直接读取DBF信息,给应用带来的好处是显而易见的。3.对于数据库的用户管理,我们一般会采用在数据库中建立一个表,记录用户名称、口令等信息,在用户登录时,应用检索这个表的信息,同用户输进的内容核对。按照一般系统管理的规定,每个用户的口令,其他人是无法在系统中查到的。即便是系统管理员也只有删除登录用户的权利,而无法获取用户的口令。可是由于系统管理员可以读取数据库中的每一张表,因此他是就有机会看到用户的登录口令的,因此我们应当在口令字段存进数据库前对其进行加密。Funcky提供了encrypt()函数和decrypt()函数就可以用来完成这一工作,这就避免了程序员手工编写加密算法的麻烦了。此外,Funcky在16位Windows下还有许多底层的操作,包括中止的调用和直接操作磁盘的函数,可以用以软件加密的工作,这里就无法详述了。总之,Funcky提供了较多的函数功能,有条件的读者可以在以后的应用中尝试利用,相信会给PowerBuilder的开发带来一定的方便。DBaaS系统其实具有更大的市场机遇:像其他云服务一样,DBaaS意味着更短的销售周期,更少的启动费用,持续不断的收入,也意味着比之前更多的客户。

蒙在股里 发表于 2015-1-19 23:24:11

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

飘飘悠悠 发表于 2015-1-25 17:07:48

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

若天明 发表于 2015-2-8 20:39:46

如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。

莫相离 发表于 2015-2-26 07:56:04

索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。

变相怪杰 发表于 2015-3-8 12:52:34

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

分手快乐 发表于 2015-3-15 23:07:31

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。

第二个灵魂 发表于 2015-3-22 17:48:23

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
页: [1]
查看完整版本: MYSQL网站制作之FUNCky 的利用