今天遇到一個(gè)問 delphi 相關(guān)問題的,提問者“只會(huì)ADO的連接方式”,想知道“Delphi firedacquery如何連接EXCEL”,由此產(chǎn)生了一點(diǎn)興趣,遂研究之,后記錄之,供同好參考。
通常,在 Delphi 里編寫一個(gè)桌面數(shù)據(jù)庫應(yīng)用的步驟可以很簡單,拖曳4個(gè)控件即可:
- TADOConnect 控件,用于連接指定的數(shù)據(jù)庫(ADO 驅(qū)動(dòng))
- TADOTable 控件,用于指定提供數(shù)據(jù)的數(shù)據(jù)表,也常用 TADOQuery 控件
- TDataDource 控件,用于在 數(shù)據(jù)集合(Table) 和 數(shù)據(jù)呈現(xiàn)(DBGrid)
- TDBGrid 控件,用于顯示數(shù)據(jù)集合中的數(shù)據(jù)
為了提供更好的用戶體驗(yàn),可能還可以添加一個(gè)導(dǎo)航控件:
- TDBNavigator 控件,用于對(duì)當(dāng)前數(shù)據(jù)集進(jìn)行添加記錄、刪除記錄等的操作
總體大概如下圖所示:
使用 FireDAC 組件建立數(shù)據(jù)庫與此過程類似,現(xiàn)將步驟記錄如下:
1、在工程中分別添加如下控件:
- TFDConnection 用于建立與數(shù)據(jù)源的連接
- TFDQuery 用于指定數(shù)據(jù)庫中的數(shù)據(jù)表
- TDataSource 用于建立 數(shù)據(jù)表 與 數(shù)據(jù)顯示 之間的橋梁
- TDBGrid 用于顯示數(shù)據(jù)
建立完成如下圖(與 ADO 方式并無大的區(qū)別):
2、雙擊 FDConnction1 圖標(biāo),進(jìn)入 FireDAC connection Editor 界面:
FireDAC 預(yù)提供了多種數(shù)據(jù)庫支持,如:IBM DB2 Server、Microsoft SQL Server、MySQL Server、Oracle Server、Microsoft Access Database 等,其中沒有 ADO,但提供了 ODBC,因此,可以選擇使用 ODBC 方式來連接 Excel。
將 Driver ID 設(shè)置為 ODBC,如下圖:
雖然現(xiàn)在就可以在表格填選各項(xiàng)設(shè)置,但推薦 點(diǎn)擊 Wizard 按鈕,使用 FireDAC 提供的向?qū)Чδ軄硗瓿稍O(shè)置:
最終生成的設(shè)置如下圖:
3、連接 FDConntion 和 FDQuery,雙擊 FDQuery 圖標(biāo),進(jìn)入 FireDAC Query Editor:
編寫 SQL 語句:
select * from [sheet1$]
在此,有點(diǎn)需要提示的是:
Excel 文件的工作簿中,通常會(huì)包含多個(gè)工作表(相當(dāng)于數(shù)據(jù)庫中的表),與通常 SQL 語句 Select 數(shù)據(jù)表名稱表示方法不同,選擇 Exce 的某個(gè) Sheet,其表示方法如下:
[ sheet名$]
寫完 SQL 語句后,可以點(diǎn)擊 Excute 按鈕,測試一下,如果正確,會(huì)在下方的 RecordSet 頁中顯示出 SQL 命令所獲取的數(shù)據(jù)結(jié)果:
至此,用 FireDAC 連接 Excel 的關(guān)鍵部分基本完成,再將 FDQuery 與 DataSoure 和 DBGrid 連接起來即可。