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的注冊連接,使用這個連接建立一個連接,然後使用過程視圖連接資料庫