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

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


咨詢
建站咨詢
