新聞中心
VFP數(shù)據(jù)庫連接詳解:輕松實現(xiàn)數(shù)據(jù)管理

10多年的伊州網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網(wǎng)站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整伊州建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“伊州網(wǎng)站設計”,“伊州網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
Visual FoxPro(VFP)是一種面向?qū)ο蟮木幊陶Z言和IDE(綜合開發(fā)環(huán)境),它的數(shù)據(jù)管理工具可幫助你輕松管理各種類型的數(shù)據(jù)。本文將介紹如何使用VFP來連接和管理數(shù)據(jù)庫,包括以下幾個部分:
1. 數(shù)據(jù)庫連接的基礎知識
2. 連接到VFP本身的數(shù)據(jù)表
3. 連接到其他數(shù)據(jù)庫
4. 數(shù)據(jù)庫管理和數(shù)據(jù)操作
5. VFP中的數(shù)據(jù)綁定
1. 數(shù)據(jù)庫連接的基礎知識
在使用VFP進行數(shù)據(jù)庫管理前,需要了解數(shù)據(jù)庫連接的基礎知識。數(shù)據(jù)庫連接是指VFP應用程序與數(shù)據(jù)庫之間創(chuàng)建的通道,使得應用程序可以讀取和修改數(shù)據(jù)庫中的信息。在VFP中,可以通過ODBC或OLE DB提供程序來連接到數(shù)據(jù)庫。
ODBC(開放數(shù)據(jù)庫連接)是一種標準的數(shù)據(jù)庫訪問協(xié)議,提供遠程訪問不同種類的數(shù)據(jù)庫的統(tǒng)一接口。而OLE DB(對象鏈接和嵌入式數(shù)據(jù)庫)是連接各種數(shù)據(jù)源的通用訪問接口,其中包括關系數(shù)據(jù)庫、郵件存儲、消息隊列等。選擇合適的提供程序來連接數(shù)據(jù)庫,將影響應用程序中數(shù)據(jù)的讀取和處理效率。
2. 連接到VFP本身的數(shù)據(jù)表
在VFP中,可以直接創(chuàng)建和連接到本身的數(shù)據(jù)表,無需使用ODBC或OLE DB。數(shù)據(jù)表是一種常用的數(shù)據(jù)存儲方式,包括行和列,可用于存儲數(shù)據(jù)、定義數(shù)據(jù)類型和設置數(shù)據(jù)關系等。
連接到本身的數(shù)據(jù)表需要先創(chuàng)建數(shù)據(jù)庫容器,然后再創(chuàng)建數(shù)據(jù)表。在VFP的“文件”菜單下,選擇“新建”->“數(shù)據(jù)庫”創(chuàng)建容器,并在新建的容器中選擇“新建”->“表格”創(chuàng)建數(shù)據(jù)表。在創(chuàng)建數(shù)據(jù)表時,需要設置表格字段、數(shù)據(jù)類型和數(shù)據(jù)校驗等屬性,此后就可以通過VFP連接到數(shù)據(jù)表,并對數(shù)據(jù)進行增刪改查等操作了。
3. 連接到其他數(shù)據(jù)庫
除了連接到VFP本身的數(shù)據(jù)表外,還可以連接到其他數(shù)據(jù)庫。使用ODBC或OLE DB提供程序,可以連接到許多不同的數(shù)據(jù)庫,如MySQL、Oracle和SQL Server等,VFP也可以連接到這些數(shù)據(jù)庫,并對其中的數(shù)據(jù)進行管理。
連接到其他數(shù)據(jù)庫需要先進行一些配置和設置,如指定數(shù)據(jù)庫服務器、用戶名和密碼,以及確定表格和字段名稱。在VFP的“文件”菜單下,選擇“新建”->“工程”創(chuàng)建工程,并在工程中設置ODBC或OLE DB提供程序的數(shù)據(jù)源、用戶信息和查詢語句等,然后就可以在工程中訪問和查詢其他數(shù)據(jù)庫中的數(shù)據(jù)。
4. 數(shù)據(jù)庫管理和數(shù)據(jù)操作
在連接到VFP或其他數(shù)據(jù)庫后,就可以進行數(shù)據(jù)庫的管理和數(shù)據(jù)操作了。VFP提供了許多工具和方法來管理和操作數(shù)據(jù)庫,比如:
– 數(shù)據(jù)庫瀏覽器:可以顯示連接的數(shù)據(jù)源、數(shù)據(jù)表和字段等信息,可用于檢查和修改數(shù)據(jù)庫結(jié)構(gòu)。
– 查詢構(gòu)建器:可以創(chuàng)建查詢語句,用于讀取、篩選和排序數(shù)據(jù),還可以對數(shù)據(jù)進行聚合、計算和分組等操作。
– 表格設計器:用于創(chuàng)建和編輯數(shù)據(jù)表和字段,可以設置默認值、數(shù)據(jù)類型和數(shù)據(jù)校驗等。
– 表格維護器:用于對數(shù)據(jù)表進行增刪改查操作,可以添加、刪除、修改和保存數(shù)據(jù)等。
– 數(shù)據(jù)層:用于將數(shù)據(jù)庫中的數(shù)據(jù)連接到應用程序中,可以實現(xiàn)數(shù)據(jù)綁定和數(shù)據(jù)操作等功能。
5. VFP中的數(shù)據(jù)綁定
數(shù)據(jù)綁定是指將數(shù)據(jù)表示為應用程序用戶界面的一部分。在VFP中,可以通過數(shù)據(jù)層和綁定框架來實現(xiàn)數(shù)據(jù)綁定。通過數(shù)據(jù)綁定,用戶可以直接在應用程序中查詢和編輯數(shù)據(jù),而無需通過SQL或其他語句來獲取和修改數(shù)據(jù)。
VFP中的數(shù)據(jù)層與ADO(活動X數(shù)據(jù)對象)和.NET Framework中的數(shù)據(jù)層類似,可以將數(shù)據(jù)源綁定到表格中,并在表格中編輯和保存數(shù)據(jù),同時還支持數(shù)據(jù)校驗和事件處理等功能??梢允褂脭?shù)據(jù)層和綁定框架來實現(xiàn)如下功能:
– 將數(shù)據(jù)源和數(shù)據(jù)控件綁定到VFP表格中,實現(xiàn)表格和數(shù)據(jù)的同步更新。
– 通過數(shù)據(jù)控件和綁定框架來讀取和寫入數(shù)據(jù),實現(xiàn)數(shù)據(jù)的快速操作。
– 使用數(shù)據(jù)校驗器和事件處理器來驗證和處理數(shù)據(jù),保證數(shù)據(jù)的正確性和一致性。
– 使用VFP的數(shù)據(jù)庫編輯器和設計器來管理和修改數(shù)據(jù)表結(jié)構(gòu),支持數(shù)據(jù)遷移和擴展。
VFP是一種功能強大的數(shù)據(jù)庫管理工具,可幫助開發(fā)人員輕松管理各種類型的數(shù)據(jù)。本文介紹了如何使用VFP來連接和管理數(shù)據(jù)庫,包括數(shù)據(jù)庫連接的基礎知識、連接到VFP本身的數(shù)據(jù)表、連接到其他數(shù)據(jù)庫、數(shù)據(jù)庫管理和數(shù)據(jù)操作,以及VFP中的數(shù)據(jù)綁定等。通過學會這些知識,可以幫助開發(fā)人員更加高效地管理和操作數(shù)據(jù)庫,實現(xiàn)更加靈活和可靠的數(shù)據(jù)管理方案。
相關問題拓展閱讀:
- 請教高手:關于VFP與MYSQL數(shù)據(jù)庫連接問題
請教高手:關于VFP與MYSQL數(shù)據(jù)庫連接問題
先自己扔塊磚頭出來。
歸納如下:
故障現(xiàn)象 : 無法連接 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)
下面,首先分析說明這兩種錯誤信息分別在什么情況下會出現(xiàn):
描述:使用mysql連接命令或連接工具,對遠程數(shù)據(jù)庫進行連接時,可能會出現(xiàn)以上兩種錯誤信息,下面以命令的連接方式進行說明。
當使用mysql里連接命令時,若帶-p參數(shù)且指明密碼,或帶-p參數(shù)不指明密碼,但在下一步輸入密碼時有字符串輸入,則返回的是
“錯誤信息1”,若不帶-p參數(shù),或帶-p參數(shù)但在下一步輸入密碼時,不輸入任何字符,則返回的是“錯誤信息2”,如下所示:
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -proot //帶-p參數(shù),并指明密碼
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參數(shù),在下一步進行密碼輸入
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參數(shù)
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參數(shù),在下一步進行密碼輸入
Enter password: //無字符串輸入
ERROR 1045 (28000): Access denied for user ‘root’@’192.168.8.123’ (using password: NO)
上面的對比可總結(jié)出一點,使用mysql命令進行登錄時,若有密碼輸入行為并輸入了字符,則驗證出錯后,則返回的錯誤提示中,對于 (using password: ?)中?的關鍵字,則返回的是YES,若沒有密碼輸入行為,或無密碼字符輸入,則返回的是NO。
除上面的實驗對比,還進行了如下的登錄對比操作,并記錄了他們所返回錯誤提示類型,對上面的總結(jié)進行驗證:
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.使用不存在的用戶,但輸入數(shù)據(jù)庫中存在的某一個密碼
ERROR 1045 (28000): Access denied for user ‘root’@’192.168.8.123’ (using password: YES)
6.使用不存在的用戶,且輸入數(shù)據(jù)庫中不存在的一個密碼
ERROR 1045 (28000): Access denied for user ‘root’@’192.168.8.123’ (using password: YES)
總結(jié):對于 ERROR 1045 (28000): Access denied for user’root’@’192.168.8.123′ 此類錯誤返回時, (using password: ?)中?的
關鍵字是YES還是NO,關鍵不在于用戶是否存在,密碼是否正確,它的結(jié)果取決于登錄時,用戶對于密碼有沒有字符串的輸入,如果沒有,MySQL數(shù)據(jù)庫驗證后,若出錯返回此類信息,則應是 (using password: NO),若用戶對密碼有字符串的輸入,返回的則是
(using password: YES)。
下面分析這類 ERROR 1045 (28000): Access denied for user’usera’@’localhost’ 錯誤出現(xiàn)的原因:
原因1 : 客戶端遠程訪問的用戶賬號并未創(chuàng)建
檢查 :
以管理員ROOT登錄后,show grants for ‘user’@’IP‘; 或者 select user from mysql.user; 確認用戶賬號是否存在。
mysql> show grants for ‘jtsec’@’192.168.8.123’;
ERROR 1141 (42023): There is no such grant defined for user ‘jtsec’ on host ‘192.168.8.123’
mysql>
返回信息:ERROR 1141 (42023): There is no such grant defined for user ‘jtsec’ on host ‘192.168.8.123’
說明,沒有jtsec用戶,或者沒有對jtsec用戶進行在192.168.8.123遠程訪問的授權(quán)。
mysql> select user,host from mysql.user;
++-+
| user | host|
++-+
| root | localhost |
++-+
1 rows in set (0.00 sec)
mysql>
關于user記錄數(shù)只有一條,是root,并沒有jtsec相關的記錄,說明沒有數(shù)據(jù)庫中沒有jtsec這個帳號。
處理 :創(chuàng)建用戶賬號。
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|
+-+
| GRANT ALL PRIVILEGES ON *.* TO ‘jtsec’@’192.168.8.123’ IDENTIFIED BY PASSWORD ‘*0B4AB716B6BE11FF3016D8EEAA217’ 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進行遠程訪問授權(quán)允許
檢查 :
以管理員ROOT登錄后 show grants for ‘user’@’IP’;
mysql> show grants for ‘root’@’192.168.8.123’;
ERROR 1141 (42023): There is no such grant defined for user ‘root’ on host ‘192.168.8.123’
mysql>
返回信息:ERROR 1141 (42023): There is no such grant defined for user ‘root’ on host ‘192.168.8.123’
說明,沒有root用戶(因為是MySQL超級用戶所以排除此種可能),或者沒有對root用戶進行在192.168.8.123遠程訪問的授權(quán)。
我們來對比一下看,root用戶本地訪問的權(quán)限,則可查出:
mysql> show grants for ‘root’@’localhost’;
++
| Grants for root@localhost|
++
| GRANT ALL PRIVILEGES ON *.* TO ‘root’@’localhost’ IDENTIFIED BY PASSWORD ‘*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B’ WITH GRANT OPTION |
++
1 row in set (0.00 sec)
或者直接查詢mysql的user用戶表select user,host from mysql.user;,其中記錄了每一個用戶的權(quán)限信息
mysql> select user,host from mysql.user;
++-+
| user | host|
++-+
| root | localhost |
++-+
1 rows in set (0.00 sec)
mysql>
關于user值為root的記錄數(shù)只有一條,且host值為localhost,說明root用戶只能在本地訪問數(shù)據(jù)庫。
處理 :進行root用戶的遠程訪問授權(quán),可以授權(quán)到指定的客戶端IP,也可以授權(quán)為所有IP都可訪問(host值為%)。
授權(quán)為所有IP都使用用戶root,密碼root,來遠程訪問數(shù)據(jù)庫
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)
再次進行授權(quán)的查詢
mysql> show grants for ‘root’@’%’;
+–+
| Grants for root@%|
+–+
| GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY PASSWORD ‘*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B’ WITH GRANT OPTION |
+–+
1 row in set (0.00 sec)
再次查詢授權(quán)表記錄
mysql> select user,host,password from mysql.user;
++-+-+
| user | host| password |
++-+-+
| root | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root | %| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
++-+-+
2 rows in set (0.00 sec)
mysql>
原因3 : 用戶賬號授權(quán)訪問的密碼不正確
檢查 :以管理員ROOT登錄后, select user,host,password from mysql.user;
mysql> select user,host,password from mysql.user;
++-+-+
| user | host| password |
++-+-+
| root | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root | %| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| jtsec | 192.168.8.123 | |
| jtsec | 192.168.8.123 | *0B4AB716B6BE11FF3016D8EEAA217 |
++-+-+
4 rows in set (0.00 sec)
mysql>
根據(jù)查詢結(jié)果可以看出來,root賬戶的本地訪問和遠程訪問密碼一樣。
而jtse賬戶在192.168.8.123這個IP上,遠程訪問數(shù)據(jù)庫的密碼有兩個,其中一個為空(第三條記錄)。
也就是說在IP為192.168.8.123的客戶機上,使用jtsec這個賬戶遠程訪問數(shù)據(jù)庫,合法的密碼有兩個可以選擇:
一個是不輸入密碼(密碼為空),另一個是*0B4AB716B6BE11FF3016D8EEAA217(經(jīng)過加密的),
其余的輸入,都是錯的。
處理 :使用正確的訪問密碼進行訪問即可。
錯誤信息 :ERROR 2023 (HY000): Can’t connect to MySQL server on ‘192.168.8.88’ (10065)
原因 :MySQL服務器上防火墻的阻斷
檢查 :在Linux下查看iptables規(guī)則,看是否未對MySQL數(shù)據(jù)庫默認通信端口3306進行放行
處理 :
添加相應的放行規(guī)則
自己在 /etc/sysconfig/iptables 里加了一下代碼:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dportj ACCEPT
或嘗試關掉防火墻
chkconfig ip6tables off
chkconfig iptables off
問題描述:
C:\Documents and Settings\Administrator>mysql -uroot -h 192.168.8.88 -proot
ERROR 2023 (HY000): Can’t connect to MySQL server on ‘192.168.8.88’ (10065)
C:\Documents and Settings\Administrator>
錯誤信息 :ERROR 2023 (HY000): Can’t connect to MySQL server on ‘hostxxxxx’ (10061)
原因 : mysqld數(shù)據(jù)庫服務沒有啟動。
檢查 :在windows 的任務管理器,或者 unix/linux 下 ps -aux | grep mysql 看一下。確認服務已經(jīng)啟動。
處理 :啟動mysqld 服務
錯誤信息 :ERROR 1130: Host xx.xx.xx.xx is not allowed to connect to this MySQL server
原因 : mysql服務器沒有賦予此客戶端遠程連接的權(quán)限。
檢查 :在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)
原因 : 用戶賬號并未創(chuàng)建,遠程登錄時登錄指令未直接包含密碼項
檢查 :以管理員ROOT登錄后,show grants for ‘usera’@’localhost’; 或者 select user from mysql.user; 確認用戶賬號是否存在。
處理 :創(chuàng)建用戶賬號。
關于vfp如何連接數(shù)據(jù)庫的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
當前名稱:VFP數(shù)據(jù)庫連接詳解,輕松實現(xiàn)數(shù)據(jù)管理(vfp如何連接數(shù)據(jù)庫)
分享網(wǎng)址:http://www.5511xx.com/article/cochoho.html


咨詢
建站咨詢
