㈠ VFP 怎麼和資料庫連接
1.你要先建好odbc數據源,指向這個資料庫,例如odbc數據源取名為sql1
2.在vfp里寫:
aa=sqlconnect(sql1,'用戶名','密碼')
*用戶名和密碼指sqlserver的用戶名和密碼
if aa<0
*連接未成功,查查數據源和網路是否有問題
endif
sqlexec('select * from 表1','tmpcursor')
*查詢結果被送到了cursor表tmpcursor中
*你就可以像操作vfp的表一樣操作tmpcursor了。
㈡ 請問高手門,怎麼用VFP6.0連接SQL資料庫,並訪問數據
首先建立個資料庫,
在資料庫中建立遠程視圖,這個遠程視圖就是應用標準的ODBC,實耐斗現異種資料庫連接,可以訪問並更新數據.
資料庫中還有個連接,
這個也是ODBC連接,
如果先建立ODBC連接,
就可以重枝沒復引用這個連接,
方便的建立多個遠程視圖時.
1.首先需要在[控制面板]-[管理工具]中,進入[數據源ODBC]-[用戶DNS]中,檢查是否存在SQLServer數據源.
2.如果沒有SQL的選項.
在這里需要添加SQLServer驅動程序
3.在添加驅動時需要對數據源命名(如SQLServer),並且將你所要連接的資料庫名,登陸資料庫的用戶名密碼等設置好.
然後在VFP中昌搭磨
1.新建遠程視圖
2.選擇數據源(或選擇已建立好的連接)SQLServer.
3.在列表中選取要連接的表
這樣就可以了.按照提示操作,不復雜.
㈢ 用VFP實現自家電腦遠程連接伺服器的mysql資料庫
你可以看一下遠程連接,
建一個ODBC的注冊連接,使用這個連接建立一個連接,然後使用過程視圖連接資料庫
㈣ 請教高手:關於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; 確認用戶賬號是否存在。
處理 :創建用戶賬號。
㈤ vfp 遠程視圖,用的是VFP的資料庫,怎麼弄了
先用ODBC測試一下連接,再檢查一下碧肢漏有沒有防火牆,SQL沒有打補丁也有可能飢運會連接不上
還有連接用戶名和連接密碼,如果沒有悔爛設置密碼,就要取消資料庫的強制約束限制
㈥ 在VFP中如何操作遠程視圖
vfp雖然提供了遠程視圖訪問其他計算機中的表,但效果並不好用,特別是局區域網外的數據。如果用SQL作為後台資料庫,前台用vfp開發相應的數據管早源辯理模陸缺塊,開發的程序比遠程視圖更優秀。建議你用SQL加VFP的伺服器+客戶端的方式開發應用程序。特別一提的是,對SQL,你只需要懂得如何聯網、更新SQL數據裂皮即可,不需要太深太多的SQL語言。