现在的位置:主页 > 期刊导读 >

用SQL pass-through创建客户/服务器应用程序

来源:电脑编程技巧与维护 【在线投稿】 栏目:期刊导读 时间:2020-10-21

【作者】网站采编

【关键词】

【摘要】第牡丹江医学院学报 2007年 28卷 6期第?80?CAL COLLEGE Vol28 NO.6 2007JOURNAL OF MUDANJING MEDIA.用SQLpass-through创建客户/服务器应用程序12李丹李新宇 (1牡丹江大学黑龙江牡丹江 ;2牡丹江医学院黑龙江

第牡丹江医学院学报  2007年  28卷  6期第?80?CAL COLLEGE Vol28 NO.6 2007JOURNAL OF MUDANJING MEDIA.用SQLpass-through创建客户/服务器应用程序12李丹李新宇 (1牡丹江大学黑龙江牡丹江  ;2牡丹江医学院黑龙江牡丹江  ) 在课堂教学中,学生通过一定阶段的VisualFoxPro的学习,都能够掌握简单的单机编程,但是对于用VisualFoxPro来编制自己的客户/服务器程序却还很陌生,尤其是利用源代码编程。笔者在这里介绍如何在VisualFoxPro平台上利用SQLpass-through技术实现客户/服务器编程。对于一个应用程序的开发我们可以有多种方法来处理,但最困难的一件事是我们如何选择一种最好最适合的方法来创建一个应用程序。而在客户服务器开发中我们所要面对的复杂事实是有两种数据引擎供我们选择,即前端的VisualFoxPro和后端的SQLdatabase引擎。当我们使用SQLpass-through时,可以完全控制VisualFoxPro与后端的通信。学过VisualFoxPro的对SQL语句应该不会陌生,我们可以构造SQL语句并发送到服务器。如果需要执行数据验证和检验数据规则,我们可以决定在什么时候和如何做。SQLpass-through函数类似于低级文件函数:它使我们可以直接访问开放数据库连接(ODBC)提供的功能和我们的后端数据。SQLpass-传递命令、through需要我们编写代码来打开连接、检查错误等等。这些操作通过一组"SQL"三个字母开头的函数来处理。这里介绍几个主要SQLpass-through函数。1要建立连接使用SQLCONNETC()函数,他们均返回一个连接句柄,这个句柄是VisualFoxPro指定给该连接的编号。在后继SPT函数调用中都要使用这个句柄。这些函数只有可选参数,没有必须的参数。如果不带参数使用他们,函数自动调用"选择连接"或"数据源"对话框;如果传递参数,可以包括用户标识以及密码,或者是一个已存已定义的数据源名称、在的命名连接的名字。2 SQLSETPROP函数允许您设置或查看特定SPT句柄的属性。您还能查看(但不能设置)ODBCChdbc和ODBChsmt,他们分别是ODBC内部的连接和语句句柄,外部库文件使用他们需要直接调用ODBC。3大量的SPT工作是用SQLEXE函数完成的,它允许向后端传递一个可执行的SQL命令,还具有一个可选的参数,指定一个可读写的临时表来存储结果集合。4 SQLTABLES函数检索远程数据源中表的名称并存入本地临时表中。5 SQLCOLS函数检索指定远程数据表中列的名称与列的信息,然后把那些信息存储进本地临时表中。6 SQLERROR用来返回有关错误的详细信息。7如果我们想开始一个远程事务,发TABLEUPDATE命令向远程服务器传递信息,然后结束事务或回滚它。VisualFoxPro通过三个函数处理的。(1)SQLSETPROP()允许您设置后端连接的各种属性。Transactions属性默认值为1(自动事务)但也可设置为2(人工事务)。如果Transactions属性设置为人工,那么后端任何数据更改是都要启动一个事务。(2)SQLCOMMIT()执行任何等待的事务。(3)SQLROLLBACK()回滚任何等待的事务。(4)CURSORGETPROP()可以用来得到远程视图正在使用的连接句柄。下面给出一个示例代码:N#_View=CURSORSETPROP("BUFFERIG",NDB_BUFOPTTABLE)&&SetbufferingInConnHandle=CURSORGETPROP("ConnectHandle")=SQLSETPROP(InConnHandle,"Transactions",2)M&&anualtransactionIFTABLEUPDATE(.T).=SQLUPDATE(InConnHandle)ELSE=SQLROLLBACK(InConnHandle)ENDIF上面这段代码很容易读懂,知道了这些函数我们就可以创建自己的应用程序实例了。首先我们需要建立与远程计算机的连接要用到SQLCONNETC()函数,返回一个连接句柄。其后SQLSETPROP()函数查看连接是否已经建立,用SQLEXE()函数与远程计算机传递信息,函数中可以嵌套我们学过的SELECT、UPDATE、DELETE、ISERT等语句进行N实际操作。当连接建立后,远程计算机中的数据我们就可以当作是本地计算机中数据进行处理了,注意在更新操作中要保证数据一致性。当然了实际操作中我们还可以引入事务处理来进行安全点处理。使用SQLpass-through可以使错误信息更友好,因为你在控制什么发生,并且你手动的进行数据验证,因此你可以控制错误信息。在可以预见一些事发生时,你可以截取SQLSever错误信息并显示给用户一个可以理解的信息。由于不可预料的事件你也会遇到失败的问题,如网络故障。对于这些,你可以决定是否分解信息或以原始方式显示他们。第牡丹江医学院学报  2007年  28卷  6期第JOURNAL OF MUDANJING MEDIACAL COLLEGE Vol28 NO.6 2007.?81?这种SQLpass-through编程方法是属于源代码编程,我1997.们应该多读一些程序段,这样可以借鉴别人的编程方法,也2李正凡.程序设计基础教程.北京中国水利水电可以开拓自己的编程思路。熟练记忆每个函数的功能,记住出版社;2005.3中国铁陈松.《VisualFoxPro中文版入门与提高实用教程》北京、.客户端与服务器端的连接方式,采取灵活的方式处理,经过道出版社;2003.一段时间的练习函数的使用和编程能力都会提高。参考文献收稿日期:2007-10-091陈宗兴.中文完全进阶手册.北京科学出版社牡医成绩分析系统的构建112徐一秋卢斌王立伟 (1牡丹江医学院计算机教育技术中心黑龙江牡丹江  ;2黑龙江科技学院黑龙江哈尔滨  ) 目前,我国高校考察学生学习情况的手段主要还是通过考试。在考试工作的诸多环节中,对成绩的统计分析是关键的一环。考试成绩的统计结果可以客观的体现出我们试卷的优劣,使我们对试题的难度有一个正确的认知。还可以让以及各个老师的教学情况有一我们对各个班级的学习情况、个较客观的了解。由于以往的统计分析工作完全依赖于人工计算,使得工作量大,处理繁琐,而且计算精度极低。本系统开发的目的就是最大限度的减轻教师的工作量,使过去几天才能完成的工作在几个小时内完成。使用计算机我们还可以方便的对分析结果进行打印以及存档,这为我们改进教学工作提高教学质量提供可靠的数据基础。1系统需求分析本系统就是要以考试成绩为原始数据,录入数据库后进行统计分析及打印输出,所需功能如下:(1)计算出所录入标准差、所有成绩的平均分、最高分、优良率、不及格最低分、不及格率并且打印输出。(2)计算出所录入所有成绩人数、的分布情况,从45分到100分,以每5分为一个段,算出每段的人数以及占总人数的百分比,并且要根据此结果生成直方图打印输出。(3)计算出所以参加统计的班级的,各个班的平均分、标准差、分以上人数,80-90分人数,不及格人90数并打印输出。(4)考试基本信息的录入及打印,如:课程学生专业、名、考试题型、学年学期、考试时间等等。(5)将最后统计结果保存为EXCEL文件的功能。(6)为了确定使用者的身份,本系统在打印模块上设置了打印密码。2 数据库结构设计考虑到各科室计算机的软硬件配置情况,本系统前台界面采用开发,后台数据库采用的是OFFICEACCESS2000,这样可以省去了安装第三方数据库的麻烦。本系统的计算量虽然很大,但是在数据结构上却不是很复杂,只需要两个表即可,例表1,表2。表1题型表(tixing)字段名类型题型文本题数数字满分数数字表2成绩表(chengji)字段名类型序号数字班级文本成绩数字3算法分析及部分代码的实现求平均值运算,本系统在统计过程中主要是进行求和、这两种算法比较简单在本文中不作说明。现将标准差的公式和算法给出:-质量--2-2-2(x1-)+(x2-)…(xn-)/(n-1)xxX-在以注:为所有学生成绩的平均分,Xn为各个学生的X成绩,N为学生的总人数。此算法在程序中的实现如下:y:=;z:=z/;forI:=1todo{计算标准差}beginb:=sqr((成绩’Asfloat-z);’).a:=a+b;;end;b:=sqrt(a/(y-1));本程序在计算各分数段人数上采用了数组来存储人数,

文章来源:《电脑编程技巧与维护》 网址: http://www.dnbcjqywh.cn/qikandaodu/2020/1021/590.html

上一篇:计算机网络技术在病理信息管理中的应用
下一篇:高中编程课程教学中的常见问题和应对策略

电脑编程技巧与维护投稿 | 电脑编程技巧与维护编辑部| 电脑编程技巧与维护版面费 | 电脑编程技巧与维护论文发表 | 电脑编程技巧与维护最新目录
Copyright © 2018 《电脑编程技巧与维护》杂志社 版权所有
投稿电话: 投稿邮箱: