1. vfp怎样与access数据库相连接.各位帮忙啊急急急急急,请给一个详细的说明啊,例子也可以啊谢谢了
在VFP里先建立一个数据库(DBC),再在这个数据库里新建一个远程视图,数据源选择MS Access Database,再选择你要连接的Access数据库
2. 什么是VFP VFP的作用是什么
visual foxpro简称VFP,同VB、DELPHI一样都是程序开发工具,VFP由于自带免费的DBF格式的数据库,在国内曾经是非常流行的开发语言,现在许多单位的MIS系统都是用VFP开发的。VFP主要用在小规模企业单位的MIS系统开发,当然也有像工控软件、多媒体软件的开发中。由于VFP不支持多线程编程,其DBF数据库在大量客户端的网络环境中对数据处理能力比较吃力,加之微软推出了SQL数据库,另有VB、VC等编程工具,所以对VFP的投入逐渐减少,目前微软已经明确表态,VFP9将是VFP最后一个版本。
3. vfp9.0连接sql数据库
VFP连接SQL数据库可以采用SPT和CA这两种方式.
下面是SPT的连接方式:
DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER,INTEGER,STRING,STRING
Public gnConnhandle &&将该SQL连接句柄设为全局变量,其他过程中仍可继续调用
lnWindowHandle=0
lcODBCDriver='SQL Server' &&Driver类型
lcODBCName=M_DataName &&数据源名
lcODBCDesc='广智80数据源' &&数据源描述
lcODBCServer=M_PcName &&SQL Server 服务器名
lcODBCDatabase=M_DataName &&要连接的数据库名称
gnConnhandle=SQLSTRINGCONNECT('driver='+lcODBCDriver+';Server='+lcODBCServer+';uid=&M_Uid;pwd=&M_Pwd;database='+lcODBCDatabase)
SQLSETPROP(0,'DispLogin',3)
SQLSETPROP(0,"IdleTimeout",0)
IF gnConnhandle<=0 &&判断SQL连接是否成功
=MESSAGEBOX("连接数据库失败,请与系统管理员联系!",0+48,"提示")
RETURN
ELSE
=MESSAGEBOX("连接数据库成功!",0+48,"提示")
ENDIF
连接成功后,gnConnhandle这个句柄就可以进行引用了。具体SPT的用法,请网络〈SPT起跳 〉这篇文章。
CA的用法也比较简单,我平时很少用,具体也网络VFP CA用法吧。
4. vfp上网语言编程
你是要访问远程数据库吗?如果是访问远程数据库可参考以下思路:
1、建立远程数据库服务器,如MSSQL、MYSQL等,并做好相应配置;
2、在VFP主程序中设置登录界面,包括用户名、密码等信息;
用类似以下代码可连接到远程MSSQL数据库(需将IP、用户名、密码、数据库名,换成你实际的情况):
SQLSTRINGCONNECT("driver={SQL Server};server=192.168.0.2;uid=用户名;pwd=密码;database=数据库名")
如果你只是访问局域网中共享的文件,VFP怕是没这功能,只要配置好局域网的文件共享,VFP直接就能访问。
5. 怎样实现VFP和SQL这两个数据库的连接
应该是sqlserver吧?没有做过,不过要sqlserver支持导入vfp才行啊,从vfp导出,再从sqlserver导入,试试看。
6. 请教高手:关于VFP与MYSQL数据库连接问题
先自己扔块砖头出来。
归纳如下:
故障现象 : 无法连接 mysql
错误信息1 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:YES)
错误信息2 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO)
下面,首先分析说明这两种错误信息分别在什么情况下会出现:
描述:使用mysql连接命令或连接工具,对远程数据库进行连接时,可能会出现以上两种错误信息,下面以命令的连接方式进行说明。
当使用mysql里连接命令时,若带-p参数且指明密码,或带-p参数不指明密码,但在下一步输入密码时有字符串输入,则返回的是
“错误信息1”,若不带-p参数,或带-p参数但在下一步输入密码时,不输入任何字符,则返回的是“错误信息2”,如下所示:
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -proot //带-p参数,并指明密码
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -p //带-p参数,在下一步进行密码输入
Enter password: //有字符串输入
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 //不带-p参数
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: NO)
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -p //带-p参数,在下一步进行密码输入
Enter password: //无字符串输入
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: NO)
上面的对比可总结出一点,使用mysql命令进行登录时,若有密码输入行为并输入了字符,则验证出错后,则返回的错误提示中,对于 (using password: ?)中?的关键字,则返回的是YES,若没有密码输入行为,或无密码字符输入,则返回的是NO。
除上面的实验对比,还进行了如下的登录对比操作,并记录了他们所返回错误提示类型,对上面的总结进行验证:
1.使用存在的用户,不输入密码
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: NO)
2.使用不存在的用户,不输入密码
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: NO)
3.使用存在的用户,且输入密码正确
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
4.使用存在的用户,但输入密码不正确
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
5.使用不存在的用户,但输入数据库中存在的某一个密码
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
6.使用不存在的用户,且输入数据库中不存在的一个密码
ERROR 1045 (28000): Access denied for user 'root'@'192.168.8.123' (using password: YES)
总结:对于 ERROR 1045 (28000): Access denied for user'root'@'192.168.8.123' 此类错误返回时, (using password: ?)中?的
关键字是YES还是NO,关键不在于用户是否存在,密码是否正确,它的结果取决于登录时,用户对于密码有没有字符串的输入,如果没有,MySQL数据库验证后,若出错返回此类信息,则应是 (using password: NO),若用户对密码有字符串的输入,返回的则是
(using password: YES)。
下面分析这类 ERROR 1045 (28000): Access denied for user'usera'@'localhost' 错误出现的原因:
原因1 : 客户端远程访问的用户账号并未创建
检查 :
以管理员ROOT登录后,show grants for 'user'@’IP‘; 或者 select user from mysql.user; 确认用户账号是否存在。
mysql> show grants for 'jtsec'@'192.168.8.123';
ERROR 1141 (42000): There is no such grant defined for user 'jtsec' on host '192.168.8.123'
mysql>
返回信息:ERROR 1141 (42000): There is no such grant defined for user 'jtsec' on host '192.168.8.123'
说明,没有jtsec用户,或者没有对jtsec用户进行在192.168.8.123远程访问的授权。
mysql> select user,host from mysql.user;
+-------+---------------+
| user | host |
+-------+---------------+
| root | localhost |
+-------+---------------+
1 rows in set (0.00 sec)
mysql>
关于user记录数只有一条,是root,并没有jtsec相关的记录,说明没有数据库中没有jtsec这个帐号。
处理 :创建用户账号。
mysql> grant all privileges on *.* to 'jtsec'@'192.168.8.123' identified by 'jtsec' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for 'jtsec'@'192.168.8.123';
+---------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected] |
+---------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'jtsec'@'192.168.8.123' IDENTIFIED BY PASSWORD '*' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select user,host from mysql.user;
+-------+---------------+
| user | host |
+-------+---------------+
| jtsec | 192.168.8.157 |
| root | localhost |
+-------+---------------+
2 rows in set (0.00 sec)
mysql>
原因2 : 用户账号存在,但未对其所在的客户端的IP进行远程访问授权允许
检查 :
以管理员ROOT登录后 show grants for 'user'@'IP';
mysql> show grants for 'root'@'192.168.8.123';
ERROR 1141 (42000): There is no such grant defined for user 'root' on host '192.168.8.123'
mysql>
返回信息:ERROR 1141 (42000): There is no such grant defined for user 'root' on host '192.168.8.123'
说明,没有root用户(因为是MySQL超级用户所以排除此种可能),或者没有对root用户进行在192.168.8.123远程访问的授权。
我们来对比一下看,root用户本地访问的权限,则可查出:
mysql> show grants for 'root'@'localhost';
+----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
或者直接查询mysql的user用户表select user,host from mysql.user;,其中记录了每一个用户的权限信息
mysql> select user,host from mysql.user;
+-------+---------------+
| user | host |
+-------+---------------+
| root | localhost |
+-------+---------------+
1 rows in set (0.00 sec)
mysql>
关于user值为root的记录数只有一条,且host值为localhost,说明root用户只能在本地访问数据库。
处理 :进行root用户的远程访问授权,可以授权到指定的客户端IP,也可以授权为所有IP都可访问(host值为%)。
授权为所有IP都使用用户root,密码root,来远程访问数据库
mysql> GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
再次进行授权的查询
mysql> show grants for 'root'@'%';
+--------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@% |
+--------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*' WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
再次查询授权表记录
mysql> select user,host,password from mysql.user;
+-------+---------------+-------------------------------------------+
| user | host | password |
+-------+---------------+-------------------------------------------+
| root | localhost | * |
| root | % | * |
+-------+---------------+-------------------------------------------+
2 rows in set (0.00 sec)
mysql>
原因3 : 用户账号授权访问的密码不正确
检查 :以管理员ROOT登录后, select user,host,password from mysql.user;
mysql> select user,host,password from mysql.user;
+-------+---------------+-------------------------------------------+
| user | host | password |
+-------+---------------+-------------------------------------------+
| root | localhost | * |
| root | % | * |
| jtsec | 192.168.8.123 | |
| jtsec | 192.168.8.123 | * |
+-------+---------------+-------------------------------------------+
4 rows in set (0.00 sec)
mysql>
根据查询结果可以看出来,root账户的本地访问和远程访问密码一样。
而jtse账户在192.168.8.123这个IP上,远程访问数据库的密码有两个,其中一个为空(第三条记录)。
也就是说在IP为192.168.8.123的客户机上,使用jtsec这个账户远程访问数据库,合法的密码有两个可以选择:
一个是不输入密码(密码为空),另一个是*(经过加密的),
其余的输入,都是错的。
处理 :使用正确的访问密码进行访问即可。
错误信息 :ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.8.88' (10065)
原因 :MySQL服务器上防火墙的阻断
检查 :在Linux下查看iptables规则,看是否未对MySQL数据库默认通信端口3306进行放行
处理 :
添加相应的放行规则
自己在 /etc/sysconfig/iptables 里加了一下代码:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
或尝试关掉防火墙
chkconfig ip6tables off
chkconfig iptables off
问题描述:
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -proot
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.8.88' (10065)
C:\Documents and Settings\Administrator>
错误信息 :ERROR 2003 (HY000): Can't connect to MySQL server on 'hostxxxxx' (10061)
原因 : mysqld数据库服务没有启动。
检查 :在windows 的任务管理器,或者 unix/linux 下 ps -aux | grep mysql 看一下。确认服务已经启动。
处理 :启动mysqld 服务
错误信息 :ERROR 1130: Host xx.xx.xx.xx is not allowed to connect to this MySQL server
原因 : mysql服务器没有赋予此客户端远程连接的权限。
检查 :在mysql服务器本地查询mysql库里user表对应的host是否包含客户端机器的IP(%为不限制IP允许远程连接)。
处理 :修改mysql库下的user表:update user set host '%' where user 'XXX';flush privileges;
错误信息 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO)
原因 : 用户账号并未创建,远程登录时登录指令未直接包含密码项
检查 :以管理员ROOT登录后,show grants for 'usera'@'localhost'; 或者 select user from mysql.user; 确认用户账号是否存在。
处理 :创建用户账号。
7. vfp 控制远程 access数据库
fhghfd
8. VFP 怎么和数据库连接
1.你要先建好odbc数据源,指向这个数据库,例如odbc数据源取名为sql1
2.在vfp里写:
aa=sqlconnect(sql1,'用户名','密码')
*用户名和密码指sqlserver的用户名和密码
if aa<0
*连接未成功,查查数据源和网络是否有问题
endif
sqlexec('select * from 表1','tmpcursor')
*查询结果被送到了cursor表tmpcursor中
*你就可以像操作vfp的表一样操作tmpcursor了。
9. 用VFP实现自家电脑远程连接服务器的mysql数据库
你可以看一下远程连接,
建一个ODBC的注册连接,使用这个连接建立一个连接,然后使用过程视图连接数据库