论文部分内容阅读
【摘要】本文闡述了运用VFP和SQL SERVER 建立C/S系统软件的方法。Visual Foxpro编程简单,容易掌握等特点被广泛应用;SQL SERVER因为自身强大的数据管理功能及安全保密性高等优势而发展成为关系数据库的标准语言。本文用VFP语言编写C/S系统的客户端管理软件,用SQL SERVER 对C/S系统的后台数据进行管理,提供数据服务。
【关键词】SQL SERVER Visual FoxPro 数据升迁 ODBC数据源 远程视图
【中图分类号】G623 【文献标识码】A 【文章编号】1009-9646(2008)07(b)-0160-02
1 引言
随着计算机的普及,数据库管理软件也在飞速的发展。用VFP编写传统的单机版数据管理软件已经不能满足当前的应用要求,取而代之的是C/S系统,它已经成为了当前数据管理软件发展的必然趋势。但对于一些早期使用VFP编写数据管理系统的行业来说,彻底更换系统可能导致数据无法转换等一些困难。本文就针对此类情况介绍用VFP和SQL SERVER建立C/S系统软件。这样不仅可以兼容原来的数据,而且又可以为以后的软件升级作好准备。
2 VFP数据库管理软件的发展现状
80年代初,最流行的数据库系统是dBase III和FoxBase,相对于dBaseIII而言,FoxBase更容易上手,同时它还能与dBaseIII相兼容。大多数行业的数据库管理软件都是采用FOXBASE设计的。而VFP也以其自身的数据处理速度开发速度、伸缩性及开发成本赢得了用户的亲睐。软件日新月异。人们关注更多的是安全性、共享性和保密性等问题,而VFP在这些功能上显得有些滞后,这样VFP也渐渐的从主流的数据管理软件中退出了,取而代之的是更先进的RDBMS。
VFP数据管理系统存在的主要的问题有:第一:数据缺乏安全性、共享性与保密性。第二:数据管理功能不强。第三:开发C/S网络系统、多媒体系统、WEB程序难度大。
3 VFP和SQL SERVER 建立C/S系统的优势
3.1 C/S系统的优势
3.1.1 支持多用户
3.1.2 支持远程操作
3.1.3 高效的数据管理
3.1.4 数据安全性高
3.2 Visual FoxPro 系统广泛的用户群和对原有数据的兼容
Visual FoxPro 系统由于早先的流行而存在大量的用户群。用它开发的系统容易被迅速掌握使用。同时FoxPro包含了大量访问后端信息的途径,加上相当快的本地数据库引擎和数据字典,它提供了客户/服务器开发所需的功能。并且选用VFP来做考勤管理的客户端,就可以直接兼容原有的大量数据库表中的数据,不需要再进行数据转换。
3.3 SQL SERVER 数据库管理功能强大
SQL SERVER是一个关系数据库管理系统,SQL SERVER 是属于关系数据库管理系统,但功能又不仅仅是数据管理。而是一套功能强大的软件系统,可以安装在专门的NT DATA SERVER上,也有个人版可以安装在WIN95/98上。功能主要有:数据库的管理和维护,用户/安全管理,数据的发布/ 转换。
3.4 VFP/SQL SERVER系统开发灵活且容易维护
C/S是中小型应用系统的趋势。用VFP本身来做C/S系统并不明智,因为VFP的数据管理功能无法与SQL SERVER 系统相提并论,而且程序设计的难度太大。用VFP和SQL SERVER建立C/S考勤管理系统程序简单,容易维护。
4 用VFP和SQL SERVER开发C/S系统的过程
4.1 将VFP的相关数据升迁到SQL SERVER中
升迁VFP的数据库,可以直接用VFP自带的升迁向导转到SQL SERVER上,但必须把所有的表都放到数据库中,自由表不能直接升迁。要把VFP数据升迁到SQL SERVER上,必须先在SQL SERVER里建立相应的数据库。SQL SERVER的管理是通过Enterprise Manager(EM企业管理器)来进行的。通过它建立数据库,每个数据库里可以包含数据表、用户/用户群、存储过程等等。改用SQL SERVER后,原来的VFP程序是需要进行修改的。
4.2 设置和删除ODBC数据源的程序实现
用API函数来设置和删除ODBC数据源,避免手工设置的繁琐。函数SQLConfig Data Source,其中第二个参数是数字(1-增加,2-修改,3-删除)
DECLARE INTEGER SQLConfigda tasource in ODBCCP32 INTEGER,INTERGER,STRING,STRING
InWindowHandle=0
LcODBCDrive=’SQL SERVER’ &&驱动类型
LcODBCNAME=”TO_GDK” &&数据源名字
LcODBCDESC=”到归档库” &&数据源描述
LcODBCDATABASE=”AHZK” &&要连接SQL SERVER上的数据库名称
添加新的ODBC
lreturn=SQLContigDataSource(InWindowHandle,1,LcODBCDriver,;
’DSN=’+lcODBCName+CHR(0)+’Description=’+LcODBCDesc+CHR(0)+’SERVER=’;
+LcODBCServer+chr(0)+’Database=’+lcodbcdatabase+chr(0))
iflreturn=0&&失败
messagebox(‘添加ODBC失败’,16,’buffer’)
endif
删除ODBC数据源。用完后,可以在表单DESTROY事件里删除。
Declare integer SQLConfigDataSource IN ODBCCP32 integer,integer,string,string
Inwindowhandle=0
Lcodbcdriver=’SQL server’&&驱动类型
Lcodbcname=’to_gdk’ && 数据源名字
Lcodbcdesc=’到归档库’ &&数据源描述
Lcodbcserver=’sql_name’ && SQL SERVER名称
Lcodbcdatabase=’awhy’ && 要连接SQL SERVER的数据库名称
先修改,判断其是否存在
lreturn=SQLconfigdatasource(Inwindowhandle,2,lcodbcdriver,’DSN=’+lcodbcname+chr(0);
+’description=’+lcodbcdesc+chr(0)+’database=’+lcodbcdatabase+chr(0);
+’database=’+lcodbcdatabase+chr(0))
if lreturn=1&&ODBC存在,刪除它
lreturn=SQLConfigdatasource(inwindowhandle,3,lcodbcdriver,’DSC=’+LCODBCNAME;
+CHR(0)+’Desciption=’+lcodbcdesc+chr(0)+’server=’+lcodbcserver+chr(0);
+’database=’+lcodbcdatabase+chr(0))
if lreturn=0
messagebox(‘删除ODBC源失败’,16,’buffer’)
endif
endif
clear dlls &&清除DLL
4.3 从VFP连接到SQL SERVER的程序实现
conn_stu=’dsn=to_gdk;uid=sa;
storesqlstringconnect(conn_str) to gnconnhandle
ifgnconnhandle<0
messagebox(‘cannot make connection’,16,’error’)
else
messagebox(‘connection made’,48,’connection’)
sqldisconnect(gnconnhandle)
endif
建立‘远程连接’
create connection myconn connstring &conn_str
4.4 远程视图的建立和删除的程序实现
建立远程视图
open database awhy.dbf exclusive &&打开本地数据库awhy.dbf
假设以SQL上数据库中t_ks表建立远程视图,视图名为myview1
create sql view myview1;
remote connection myconn AS;
select * from t_ks where t_ks,ks_zkz=’901008’ order by t_ks
删除远程视图
close all database
open database awhy.dbf exclusive
set database to awhy.dbf
myviewname=’myview1’
dele view &myviewname
pack database
4.5 使用SQLEXEC对远程数据库的表进行添加、删除、更新和查询的程序实现
首先用SQLSTRINGCONNECT(conn_str)建立远程连接,成功后直接使用create table、drop table、update 和select的SQL语句。
Sql_add=’create table t_ks2(zkz char(10))’
Sql_update=’update t_ks set jtdm_dm=’ ’+’2601’
Sql_dele=’drop table t_ks2’
Sql_que=’select * from t_ks’
SQLEXEC(gnconnhandle,sql_add) &&增加表
SQLEXEC(gnconnhandle,sql_dele) &&删除表
SQLEXEC(gnconnhandle,sql_update) &&更新表
SQLEXEC(gnconnhandle,sql_que) &&查询表
通过以上几个步骤已经在VFP中用程序的方法建立了与SQL SERVER的连接和数据交换。用VFP编写客户软件就很容易了。
5 结语
本文是在实际应用当中总结出的开发C/S系统软件一些比较常用的方法,对于被广泛采用的VFP语言以及灵活又实用的SQL数据库而言,提供了一个极好的相互连接的桥梁。
参考文献
[1] 史济民,汤观全等著,FOXPRO及其应用系统开发,清华大学出版社,2000.12.
[2] Ray kankins,Paul Jensen, Paul Bertucci.SQL SERVER 2000实用全书[美国].北京:电子工业出版社,2002.9.
[3] 范立南,VISUAL FOXPRO程序设计与应用[M],北京:电子工业出版社,2004.
[4] 孙秀钰,VISUAL FOXPRO程序设计[M]北京:中国电力出版社,2004.
【关键词】SQL SERVER Visual FoxPro 数据升迁 ODBC数据源 远程视图
【中图分类号】G623 【文献标识码】A 【文章编号】1009-9646(2008)07(b)-0160-02
1 引言
随着计算机的普及,数据库管理软件也在飞速的发展。用VFP编写传统的单机版数据管理软件已经不能满足当前的应用要求,取而代之的是C/S系统,它已经成为了当前数据管理软件发展的必然趋势。但对于一些早期使用VFP编写数据管理系统的行业来说,彻底更换系统可能导致数据无法转换等一些困难。本文就针对此类情况介绍用VFP和SQL SERVER建立C/S系统软件。这样不仅可以兼容原来的数据,而且又可以为以后的软件升级作好准备。
2 VFP数据库管理软件的发展现状
80年代初,最流行的数据库系统是dBase III和FoxBase,相对于dBaseIII而言,FoxBase更容易上手,同时它还能与dBaseIII相兼容。大多数行业的数据库管理软件都是采用FOXBASE设计的。而VFP也以其自身的数据处理速度开发速度、伸缩性及开发成本赢得了用户的亲睐。软件日新月异。人们关注更多的是安全性、共享性和保密性等问题,而VFP在这些功能上显得有些滞后,这样VFP也渐渐的从主流的数据管理软件中退出了,取而代之的是更先进的RDBMS。
VFP数据管理系统存在的主要的问题有:第一:数据缺乏安全性、共享性与保密性。第二:数据管理功能不强。第三:开发C/S网络系统、多媒体系统、WEB程序难度大。
3 VFP和SQL SERVER 建立C/S系统的优势
3.1 C/S系统的优势
3.1.1 支持多用户
3.1.2 支持远程操作
3.1.3 高效的数据管理
3.1.4 数据安全性高
3.2 Visual FoxPro 系统广泛的用户群和对原有数据的兼容
Visual FoxPro 系统由于早先的流行而存在大量的用户群。用它开发的系统容易被迅速掌握使用。同时FoxPro包含了大量访问后端信息的途径,加上相当快的本地数据库引擎和数据字典,它提供了客户/服务器开发所需的功能。并且选用VFP来做考勤管理的客户端,就可以直接兼容原有的大量数据库表中的数据,不需要再进行数据转换。
3.3 SQL SERVER 数据库管理功能强大
SQL SERVER是一个关系数据库管理系统,SQL SERVER 是属于关系数据库管理系统,但功能又不仅仅是数据管理。而是一套功能强大的软件系统,可以安装在专门的NT DATA SERVER上,也有个人版可以安装在WIN95/98上。功能主要有:数据库的管理和维护,用户/安全管理,数据的发布/ 转换。
3.4 VFP/SQL SERVER系统开发灵活且容易维护
C/S是中小型应用系统的趋势。用VFP本身来做C/S系统并不明智,因为VFP的数据管理功能无法与SQL SERVER 系统相提并论,而且程序设计的难度太大。用VFP和SQL SERVER建立C/S考勤管理系统程序简单,容易维护。
4 用VFP和SQL SERVER开发C/S系统的过程
4.1 将VFP的相关数据升迁到SQL SERVER中
升迁VFP的数据库,可以直接用VFP自带的升迁向导转到SQL SERVER上,但必须把所有的表都放到数据库中,自由表不能直接升迁。要把VFP数据升迁到SQL SERVER上,必须先在SQL SERVER里建立相应的数据库。SQL SERVER的管理是通过Enterprise Manager(EM企业管理器)来进行的。通过它建立数据库,每个数据库里可以包含数据表、用户/用户群、存储过程等等。改用SQL SERVER后,原来的VFP程序是需要进行修改的。
4.2 设置和删除ODBC数据源的程序实现
用API函数来设置和删除ODBC数据源,避免手工设置的繁琐。函数SQLConfig Data Source,其中第二个参数是数字(1-增加,2-修改,3-删除)
DECLARE INTEGER SQLConfigda tasource in ODBCCP32 INTEGER,INTERGER,STRING,STRING
InWindowHandle=0
LcODBCDrive=’SQL SERVER’ &&驱动类型
LcODBCNAME=”TO_GDK” &&数据源名字
LcODBCDESC=”到归档库” &&数据源描述
LcODBCDATABASE=”AHZK” &&要连接SQL SERVER上的数据库名称
添加新的ODBC
lreturn=SQLContigDataSource(InWindowHandle,1,LcODBCDriver,;
’DSN=’+lcODBCName+CHR(0)+’Description=’+LcODBCDesc+CHR(0)+’SERVER=’;
+LcODBCServer+chr(0)+’Database=’+lcodbcdatabase+chr(0))
iflreturn=0&&失败
messagebox(‘添加ODBC失败’,16,’buffer’)
endif
删除ODBC数据源。用完后,可以在表单DESTROY事件里删除。
Declare integer SQLConfigDataSource IN ODBCCP32 integer,integer,string,string
Inwindowhandle=0
Lcodbcdriver=’SQL server’&&驱动类型
Lcodbcname=’to_gdk’ && 数据源名字
Lcodbcdesc=’到归档库’ &&数据源描述
Lcodbcserver=’sql_name’ && SQL SERVER名称
Lcodbcdatabase=’awhy’ && 要连接SQL SERVER的数据库名称
先修改,判断其是否存在
lreturn=SQLconfigdatasource(Inwindowhandle,2,lcodbcdriver,’DSN=’+lcodbcname+chr(0);
+’description=’+lcodbcdesc+chr(0)+’database=’+lcodbcdatabase+chr(0);
+’database=’+lcodbcdatabase+chr(0))
if lreturn=1&&ODBC存在,刪除它
lreturn=SQLConfigdatasource(inwindowhandle,3,lcodbcdriver,’DSC=’+LCODBCNAME;
+CHR(0)+’Desciption=’+lcodbcdesc+chr(0)+’server=’+lcodbcserver+chr(0);
+’database=’+lcodbcdatabase+chr(0))
if lreturn=0
messagebox(‘删除ODBC源失败’,16,’buffer’)
endif
endif
clear dlls &&清除DLL
4.3 从VFP连接到SQL SERVER的程序实现
conn_stu=’dsn=to_gdk;uid=sa;
storesqlstringconnect(conn_str) to gnconnhandle
ifgnconnhandle<0
messagebox(‘cannot make connection’,16,’error’)
else
messagebox(‘connection made’,48,’connection’)
sqldisconnect(gnconnhandle)
endif
建立‘远程连接’
create connection myconn connstring &conn_str
4.4 远程视图的建立和删除的程序实现
建立远程视图
open database awhy.dbf exclusive &&打开本地数据库awhy.dbf
假设以SQL上数据库中t_ks表建立远程视图,视图名为myview1
create sql view myview1;
remote connection myconn AS;
select * from t_ks where t_ks,ks_zkz=’901008’ order by t_ks
删除远程视图
close all database
open database awhy.dbf exclusive
set database to awhy.dbf
myviewname=’myview1’
dele view &myviewname
pack database
4.5 使用SQLEXEC对远程数据库的表进行添加、删除、更新和查询的程序实现
首先用SQLSTRINGCONNECT(conn_str)建立远程连接,成功后直接使用create table、drop table、update 和select的SQL语句。
Sql_add=’create table t_ks2(zkz char(10))’
Sql_update=’update t_ks set jtdm_dm=’ ’+’2601’
Sql_dele=’drop table t_ks2’
Sql_que=’select * from t_ks’
SQLEXEC(gnconnhandle,sql_add) &&增加表
SQLEXEC(gnconnhandle,sql_dele) &&删除表
SQLEXEC(gnconnhandle,sql_update) &&更新表
SQLEXEC(gnconnhandle,sql_que) &&查询表
通过以上几个步骤已经在VFP中用程序的方法建立了与SQL SERVER的连接和数据交换。用VFP编写客户软件就很容易了。
5 结语
本文是在实际应用当中总结出的开发C/S系统软件一些比较常用的方法,对于被广泛采用的VFP语言以及灵活又实用的SQL数据库而言,提供了一个极好的相互连接的桥梁。
参考文献
[1] 史济民,汤观全等著,FOXPRO及其应用系统开发,清华大学出版社,2000.12.
[2] Ray kankins,Paul Jensen, Paul Bertucci.SQL SERVER 2000实用全书[美国].北京:电子工业出版社,2002.9.
[3] 范立南,VISUAL FOXPRO程序设计与应用[M],北京:电子工业出版社,2004.
[4] 孙秀钰,VISUAL FOXPRO程序设计[M]北京:中国电力出版社,2004.