A. DELPHI基礎教程:Delphi開發資料庫應用程序概述(一)[3]
Visual Query Builder 以可視化的方式建立SQL語句對資料庫表和表中的記錄進行操作
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SQL links使得Delphi資料庫應用程序利用SQL語言訪問駐留在遠程伺服器上的數據 這些伺服器包括ORACLE Sybase Microsoft SQL Server Informix InterBase 當安裝SQL Link驅動程序之後 SQL語句便可以直接操作伺服器上的數據
Delphi可以訪問的數據源(DataSource)
Delphi資料庫應用程序是通過BDE獲取它們所需的數據的 BDE與不同類型的數據源打交道 BDE可以使用的數據源有如表 所示
表 Delphi可訪問的數據源
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
數據源(DataSource) 特 性 描 述 文件擴展名
─────────────────────────────────────
dBASE資料庫 資料庫表是通過dBASE資料庫管理系統或DBD建立的 每個表是一個獨立的文件 DBF
─────────────────────────────────────
Paradox資料庫 資料庫表是通過Paradox資料庫管理系統 DB或DBD建立的 每個表是一個獨立的文件
─────────────────────────────────────
ASCII文件 表是通過Database Desktop建立的 每個 TXT表是一個獨立的文件
─────────────────────────────────────
本地InterBase伺服器 資料庫是通過InterBase資料庫管理系統 GDB建立的 多個表包含在一個資料庫文件中
─────────────────────────────────────
SQL資料庫伺服器 資料庫是通過相應的資料庫伺服器提供的 依賴不同的ORACLE Sybase Informix 專用或通用工具建立的 也可以通過DBD來 資料庫管理Microsoft SQL Server 創建資料庫 並通過SQL Link訪問資料庫 系統InterBase
─────────────────────────────────────
ODBC數據源 主要是指那些具有ODBC介面的資料庫系統 依賴於相應如MS Access Btrieve等的資料庫
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Delphi資料庫的體系結構
Delphi使用可視化的部件創建資料庫應用 跟創建其它的非資料庫應用程序一樣 資料庫部件都具備一定的屬性 程序設計人員可以在設計過程中設置部件的多種屬性 也可以在程序運行過程中通過程序來設置部件的各種屬性
在Delphi部件板上有兩頁資料庫部件用於開發資料庫應用程序
數據訪問部件頁 該頁上的部件主要用於說明有關的資料庫的信息 如應用程序要訪問(連接)的資料庫 要訪問資料庫中的具體的資料庫表 以及要訪問表中哪些欄位等 在實際的開發應用中常用的部件有TDataSource TTable TQuery等
數據控制部件頁 該頁上的部件主要用於顯示瀏覽資料庫中的數據信息 為用戶提供了一個可視化的界面 常用的部件有 TDBGrid TDBEdit TDBCheck等 可以讓用戶對資料庫中的信息進行有效的瀏覽 編輯 插入 刪除等操作
TTable TQuery TStoredproc部件負責與實際的資料庫表聯系 並從中獲取數據信息 因而它們又常常被稱為數據集部件 它們在程序設計過程中是可見的 但在程序運行時是不可見的 它們通過 BDE 為應用程序提供與資料庫的連接 數據控制部件通過TDataSource部件與數據集部件相連 為用戶提供一個可視化的界面 並在其中顯示資料庫中的數據信息
數據訪問部件
數據訪問部件頁上提供了一組數據訪問部件用來訪問資料庫中的數據
當要創建一個資料庫應用時 首先在窗體中選擇一個數據訪問部件 然後為數據訪問部件設置有關的屬性 說明要訪問的資料庫 數據表以及表中的記錄等 數據訪問部件為數據控制部件與數據源建立一條通道 數據訪問部件在程序運行時是不可見的 下表列出了數據訪問頁上的數據訪問部件以及它們的主要用途
表 數據訪問部件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部件名稱 主 要 用 途
────────────────────────────
作為數據集部件TTable TQuery StoredProc組TDataSource 件與數據瀏覽件TDBGrid TDBEdit之間傳送數據的通道
────────────────────────────
TTable 它是存取磁碟上資料庫表的媒介 它通過BDE存取資料庫表中的數據 TTable再與TDataSource進行 對話 使得數據瀏覽部件能夠有效地從TTable中訪問數據並能顯示和編輯其中的數據
────────────────────────────
TQuery 它利用SQL語言訪問磁碟上資料庫表中的數據 並與TDataSource 對話 實現數據瀏覽部件對資料庫的訪問
────────────────────────────
TStoredProc 在應用程序中 它主要用來訪問遠程伺服器中的存貯過程
────────────────────────────
TDatabase 當應用程序要登錄到一個遠程伺服器上的資料庫時 可以用該部件來建立應用程序與資料庫永久
性的連接
────────────────────────────
TBatchMove 用於復制資料庫表的結構或表中的記錄
────────────────────────────
TReport 用於創建資料庫的輸出報表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
lishixin/Article/program/Delphi/201311/25180
B. 請問用DELPHI開發單機版的資料庫是用.db或.dbf還是.mdb類型
可以用access的.mdb,也可用delphi自帶的資料庫,我想你開發的是單機版,已足夠了.還有,你們單位現在用的是.dbf,可以用delphi自帶的工具來轉換成你所需要的格式,保證數據不會丟失~~
C. 在Delphi資料庫應用程序中常見錯誤
Delphi資料庫應用程序中常見錯誤 原因/解決方法
數據感知控制項DataSource屬性未設置或者設置錯誤(鏈接為其他的DataSource)
原因 在設計時不小心改動 拷貝粘貼過程中未全部更改
測試時標准代碼中沒有數據 無法進行測試
解決 確定需悉明咐要輸入數據的表格的先後順序 在依次輸入測試數據 再進行測試
wwFilterDialog中進行數據過濾時 應該顯示欄位列表的欄位沒有顯示 不方便輸入
解決 判斷欄位 查找標碼填充欄位列表
運行程序時出現欄位未找到的錯誤
原因 資料庫進行了更改 而DataSet的欄位列表沒有更新
用DBGrid顯示數據時 為方便閱讀 單數行與奇數行用不同顏色顯示 在數據量時 瀏覽數據時明顯感覺到DBGrid數據刷新不夠 單數行與奇數行的顏色不能正確顯示
原因 DBGrid的 DataSource的DataSet中有較多的查找欄位
解決 將部分查找欄位去除
窗體標題為英文
原因 設計後未仔細檢查
解決 更改為中文
DBNavigator中 刷新 按鈕點擊後出錯
原因未知
解決 去除該按鈕
與dxDBGrid配套使用的DBNavigator 在dxDBGrid的模式為LoadAll時 導航按鈕與期望的方式不同
原因 dxDBGrid在LoadAll模式時 與DataSet中的數據不一致
解決 去除導航中的部分按鈕
由存儲過程得到的數據集對應的DBNavigator的 刷新 出錯
原因 不清
解決 去除該按鈕
窗體Show後 進入數據編輯後 部分查找欄位編輯時出現數據集未打開
原因 數據集打開順序有問題
解決 調整數據集的打開順序 讓標碼數據集先打開
出現未找到存儲過程的錯誤
原因 資料庫的存儲過程進行的重命名
解決 更改DataSource中的存儲程序名稱
wwFilterDialog的標題空白
解決 改為與數據集相關的標題 如 篩選計劃
窗體在 * 下設計時 即使窗體為 * 在屏幕解析度為 * 的時候出現窗體中的內容不能全部顯示的現象
解決 * 下設計 * 時預留一定的空間
出現 Couldno t perform the edit because another user changed the record 錯誤
原因 未知
dxDBGrid在將欄位拖曳到分組欄時 不能進行編輯 dxDBGrid中的當前記錄與數據感知控制項的當前記錄不一致
解決 將睜純二者在不同部分實現 不在同一窗體實現
出現 General SQL Error 錯誤
原因 未知 但發現在FormShow中打開表很多 嘗試將其中部分表不打開時 錯誤消失 且不打開的表不同時 錯誤都消失
(系統休眠後)第一次連接資料庫時(用戶 口令均正確) 出現錯誤 但第二次則正常
原因 未知
打開/保存對話框未設置過濾條件
解決 設槐飢置合理的Filter DefaultExt
防差錯措施不完善 (如輸入數據(數字)出錯時不報警)
解決 保存前驗證正確性判斷 設置Mask
數據感知控制項DBComboBox應可進行選擇和輸入的輸入框 不能進行輸入
解決 更改Style屬性為csDropDown
其他更一般的問題
模態對話框 Escape鍵不起作用
解決 合理設置Button的Canceled屬性
模態對話框 回車鍵不起默認作用
解決 合理設置Button的Defaulted屬性
使用Tab鍵後焦點跳轉順序無規律
lishixin/Article/program/Delphi/201311/8471