主题:VFP中能用程序与SQLSEVER连接吗?请各位老师指点,把代码写清楚好吗。十分感谢
wjg789
[专家分:0] 发布于 2006-03-07 15:27:00
VFP中能用程序与SQLSEVER连接吗?怎样写程序访问服务器中的数据库中的表。请各位老师指点,把代码写清楚好吗。十分感谢。
回复列表 (共5个回复)
沙发
AtwillCm [专家分:450] 发布于 2006-03-07 16:51:00
运用VFP和SQL SERVER建立C/S学籍管理系统的研究与实践
作者:方兵、董建钢、楼润玉
随着.......
二、用VFP/SQL SERVER做C/S系统的几个步骤
1、将VFP的数据升迁到SQL SERVER中
要利用现有的数据就必须要将原有的VFP数据进行升迁。VFP的数据库,可以直接用VFP自带的升迁向导转到SQL SERVER上,但必须把所有的表都放到数据库里,自由表不能直接升迁,而实际上升迁上去的又只是表,数据库本身不能转到SQL SERVER里。要把VFP数据升迁到SQL SERVER上,必须先在SQL SERVER里建立相应的数据库(注意SQL SERVER里的数据库名不要与VFP本地数据库名相同)。SQL SERVER的管理是通过ENTERPRISEMANAGER(EM)来进行的。通过它建立数据库,每个数据库里可以包含数据表,用户/用户群,视图,存储过程等等。改用SQL SERVER后,原来的VFP程序是需要进行修改,而且有的时候修改还是比较大,但笔者感觉用C/S写出来的程序反而比单机版更精简一些。
2、设置ODBC数据源和删除ODBC数据源
VFP和SQL SERVER的连接是通过ODBC或者OLEDB(ADO)来进行的。一般情况下可以打开控制面板的ODBC数据源进行设置。但我们希望能在程序里动态设置数据源,因为:①、可以不用去为每个用户的机器手动设置,②、为了数据的安全性,使用完后,把ODBC数据源删掉。
所以本文中只讨论用程序的方法设置ODBC数据源和删除ODBC数据源,利用控制面板的ODBC数据源进行设置的方法请参照VFP的相关资料。
*用 API 函数来设置和删除 ODBC 数据源。
*函数名字是 SQLConfigDataSource,其中第二项参数是数字(1-增加 2-修改 3-删除)
DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRING
lnWindowHandle=0
lcODBCDriver='SQL Server' && DRIVER 类型
lcODBCName='sjy' && 数据源名字
lcODBCDesc='hzddsjy' && 数据源描述
lcODBCServer='HZDD' && SQL SERVER名字
lcODBCDatabase='sjy' && 要连接SQL SERVER服务器的数据库名字
** 先试图修改已有的 ODBC,如果不存在,返回 0。
lreturn=SQLConfigDataSource(lnWindowHandle, 2, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
IF lreturn=0 && 不存在
** 添加新的 ODBC
lreturn=SQLConfigDataSource(lnWindowHandle, 1, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
IF lreturn=0 &&失败
MessageBox('添加ODBC数据源失败',16,'BUFFER')
ENDIF
ENDIF
**删除ODBC数据源
**用完后,可以在表单DESTROY事件里删除ODBC。 如果不想重复设置参数,可以把这些参数加到表单作为属性。
DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRING
lnWindowHandle=0
lcODBCDriver='SQL Server' && DRIVER 类型
lcODBCName='sjy' && 数据源名字
lcODBCDesc='hzddsjy' && 数据源描述
lcODBCServer='HZDD' && SQL SERVER名字
lcODBCDatabase='sjy' && 要连接SQL SERVER服务器的数据库名字
**先修改,或者其是否存在
lreturn=SQLConfigDataSource(lnWindowHandle, ;
2, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
IF lreturn=1 &&ODBC存在,删除它
lreturn=SQLConfigDataSource(lnWindowHandle, ;
3, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
IF lreturn=0
MessageBox('删除ODBC源失败,16,'BUFFER')
ENDIF
ENDIF
CLEAR DLLS && 清除DLL
3、从VFP连接到SQL SERVER
从VFP连接到SQL SERVER也有两种方法:程序的方法和在本地数据库中手工建立,本文仅讨论以程序的方法建立VFP到SQL SERVER的连接。
Open database hzddcj exclusive
*SQL连接的用户名与密码
MY_USERID="sjy" &&SQL的用户名
MY_PASSWORD="sjy123" && SQL的用户名
MY_DATASOURCE="sjy" && 要连接SQL SERVER服务器的数据库名字
********创建远程数据连接
handle=sqlconnect(my_datasource,my_userid,my_password)
If handle<0
Messagebox("未连接到数据服务器,退出! ",0+48+0,"警告")
Close all data
Retu
Endif
sqldisconnect(handle)
Set database to "hzddcj"
**********建立“远程连接”
Create connection "远程数据" datasource &my_datasource userid &my_userid password &my_password
4、远程视图的建立和删除
远程视图的建立和删除也有两种方法:在本地数据库中手工建立和程序的方法,本文仅讨论以程序的方法建立和删除远程视图。
*建立远程视图
****此处本地数据库名以hzddcj为例:
Open database hzddcj exclusive
***建立远程视图,视图名为myview1
***假设SQL上的数据库中有ajbyc表,库结构为(学号,C,9;姓名,C,10;性别,C,2;专业名称,C,30):
Create sql view myview1 ;
remote connection 远程数据 AS ;
SELECT *;
FROM ajbyc ajbyc;
WHERE ajbyc.学号 = ?xh;
order by ajbyc.学号
DBSetProp("myview1","view","tables",'ajbyc')
***删除远程视图
Close all database
Open database hzddcj exclusive &&打开本地数据库hzddcj
Set database to hzddcj
Myviewname=" myview1"
Delete view &myviewname
Pack database
Wait clear
通过以上四个步骤已经在VFP中用程序的方法建立了与SQL SERVER的连接,现在我们可以利用远程视图来编写学籍管理的C/S程序了。
三、VFP和SQL SERVER建立C/S学籍管理系统的优势
目前杭州电大学籍科已经用VFP和SQL SERVER建立C/S学籍管理的部分系统,并投入使用。在今年的毕业审核、毕业证书办理中发挥了巨大作用。在使用过程中,C/S的学籍管理系统显示出单机版不能比拟的优势:
1、支持多用户:
多个用户可以同时操作C/S学籍管理系统,解决多用户同时成绩录入、毕业审核等一系列单机版程序不能解决的问题。
2、支持远程操作:
可以远程操作C/S学籍管理系统,不仅支持多个不同科室通过校园网操作,理论上也支持各县电大通过宽带网操作。
3、高效的数据管理:
数据全部在服务器上,提高了数据管理的效率,不需要象单机版一样将数据进行传递。
4、数据安全性高:
SQL SERVER的数据安全性比较高,可以对用户权限进行限制。
5、系统简单灵活易维护;
用VFP和SQL SERVER建立C/S学籍管理系统程序简单,容易维护。
板凳
hebeivfp [专家分:0] 发布于 2006-03-22 14:19:00
有点晕,我只会用手工连接的,我回去试试.
3 楼
labxj0769 [专家分:21070] 发布于 2006-03-22 19:09:00
顶一个
4 楼
异乡的耗子 [专家分:250] 发布于 2006-03-26 18:02:00
顶一下!详细。颇有见解
5 楼
bookwrom [专家分:20] 发布于 2006-04-06 18:46:00
不错 !
顶了!
[em2]
我来回复