SQLite是一個(gè)軟件庫,實(shí)現(xiàn)了自給自足的、無服務(wù)器的、零配置的、事務(wù)性的SQL數(shù)據(jù)庫引擎。SQLite是世界上最廣泛部署的數(shù)據(jù)庫引擎之一。SQLite源代碼開放,沒有授權(quán)限制。正是因?yàn)槠涿赓M(fèi)、輕巧、綠色等特點(diǎn),因此SQLite的應(yīng)用范圍很廣,在各種軟件上都有應(yīng)用,其中不乏Adobe、Apple、Firefox,甚至包括google、Microsoft、SUN這樣的企業(yè)。在上位機(jī)項(xiàng)目開發(fā)中。SQLite的應(yīng)用也很廣泛,今天主要跟大家分享一下SQLite的部署、應(yīng)用及常見錯(cuò)誤分析。
【公眾號(hào)dotNet工控上位機(jī):thinger_swj】
SQLite數(shù)據(jù)庫和其他數(shù)據(jù)庫相比,一個(gè)很大的優(yōu)勢(shì)在于免部署,也就意味著不需要安裝即可使用,但是需要同樣也需要數(shù)據(jù)庫客戶端管理軟件的支持,SQLite的客戶端軟件很多,包含SQLite Database Browser、SQLite Administrator、SQLite Expert Personal、SQLite Studio等,個(gè)人比較喜歡使用SQLite Studio,需要的童鞋可以關(guān)注本公眾號(hào),在后臺(tái)發(fā)送關(guān)鍵詞SQLiteStudio即可獲取。為了后續(xù)介紹SQLite數(shù)據(jù)應(yīng)用,首先要準(zhǔn)備好一個(gè)數(shù)據(jù)庫及數(shù)據(jù)表,通過SQLite可以很方便的進(jìn)行創(chuàng)建,創(chuàng)建完成后會(huì)生成一個(gè)文件。
如上圖所示,創(chuàng)建了一個(gè)SQLite數(shù)據(jù)庫,名稱為SQLiteDemo,在數(shù)據(jù)庫中創(chuàng)建了一個(gè)數(shù)據(jù)表,名稱為Student,Student數(shù)據(jù)表下會(huì)有四個(gè)字段,分別為StudentID、StudentName、StudentGender及StudentClass,并向其中插入了兩條數(shù)據(jù)。
首先創(chuàng)建一個(gè)Windows應(yīng)用程序,窗體中簡(jiǎn)單的拖放兩個(gè)控件,一個(gè)查詢按鈕,一個(gè)顯示控件DataGridView,我們所要做的就是基于SQLite數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)的查詢。如下圖所示:
眾所周知,Windows開發(fā)會(huì)存在平臺(tái)版本的問題,一般情況下,我們使用的都是Any CPU,Any CPU默認(rèn)是32位目標(biāo)平臺(tái),但是有的時(shí)候我們可能需要在64位平臺(tái)上使用SQLite,今天著重講述一下如何在各個(gè)平臺(tái)下實(shí)現(xiàn)SQLite的應(yīng)用。
一般情況下,我們的項(xiàng)目都是使用Any CPU作為目標(biāo)平臺(tái),默認(rèn)為32位。如果想實(shí)現(xiàn)SQLite數(shù)據(jù)庫應(yīng)用,首先要準(zhǔn)備一些類庫,因?yàn)镾QLite并不是微軟的數(shù)據(jù)庫,所以Windows系統(tǒng)是沒有SQLite類庫的,SQLite類庫會(huì)區(qū)分32位和64位,如下圖所示:
這個(gè)錯(cuò)誤,很多童鞋經(jīng)常會(huì)遇到,錯(cuò)誤提示很明顯,就是提示缺少指定模塊,模塊名稱為SQLite.Interop.dll,如果大家還有印象的話,這個(gè)dll是在SQLite類庫中,32位和64位專有的文件夾中,如下圖所示,因此,我們只需要將x86文件夾下的這兩個(gè)文件復(fù)制到Debug目錄下,這里一定要復(fù)制x86文件夾下的,因?yàn)锳ny CPU默認(rèn)是x86平臺(tái)。
當(dāng)我們使用64位平臺(tái)時(shí),首先將目標(biāo)平臺(tái)改成x64,如下圖所示:
這時(shí)候,運(yùn)行界面,點(diǎn)擊查詢,會(huì)出現(xiàn)以下錯(cuò)誤:
對(duì)于這個(gè)錯(cuò)誤,我們將x64文件夾下的兩個(gè)文件復(fù)制到Debug目錄下,然后替換一下,再執(zhí)行查詢,實(shí)現(xiàn)最終的數(shù)據(jù)讀取:
當(dāng)我們同時(shí)將下圖中的目標(biāo)平臺(tái)修改為x64時(shí),再重新生成,會(huì)在bin文件夾下重新產(chǎn)生一個(gè)x64的文件夾,這時(shí)候所有的生成內(nèi)容都將存儲(chǔ)在x64文件夾下,與之前的Debug無關(guān)。
這時(shí)候再重新生成,運(yùn)行界面,點(diǎn)擊查詢,又會(huì)出現(xiàn)下面的錯(cuò)誤:
再次遇到這樣的問題,我們應(yīng)該很清楚,就是需要將只需要將類庫中x64文件夾下的這兩個(gè)文件復(fù)制到Bin目錄下x64文件夾下的Debug文件夾中,同時(shí)還需要將數(shù)據(jù)庫復(fù)制進(jìn)去。重新生成,點(diǎn)擊查詢,結(jié)果如下:
當(dāng)我們將下圖中的目標(biāo)平臺(tái)修改為x86時(shí),再重新生成,同理會(huì)在bin文件夾下重新產(chǎn)生一個(gè)x86的文件夾,這時(shí)候所有的生成內(nèi)容都將存儲(chǔ)在x86文件夾下,與之前的Debug無關(guān),這里的解決方案與上述2.2描述類似,因此不再作贅述。
通過針對(duì)各個(gè)平臺(tái)的說明,我們發(fā)現(xiàn)SQLite使用中常見的錯(cuò)誤無非就那么幾種,而解決方案也是差不多,始終需要遵從一個(gè)原則,保證我們需要的第三方dll放在項(xiàng)目生成的路徑下。當(dāng)我們不清楚項(xiàng)目生成的路徑時(shí),可以通過清理解決方案,再重新生成解決方案,觀察項(xiàng)目exe的修改時(shí)間,是否為當(dāng)前最新的時(shí)間,從而判斷該路徑是否為項(xiàng)目生成路徑。
1.下載SQLite Expert Professional 5 - 64bit ,要用這種專家版本的,個(gè)人版本的不能實(shí)現(xiàn)本功能。
2.把數(shù)據(jù)放在excel,保留excel數(shù)據(jù)中需要的字段,刪除無關(guān)字段.注意設(shè)置excel表格的單元格式為文本。
設(shè)置excel表格的單元格式為文本
3.將excel另存為cvs格式文件.另存名稱如:AA.cvs 則導(dǎo)入后表名即為AA,數(shù)據(jù)舉例如下:
數(shù)據(jù)
4.打開SQLite Expert Professional 5 , NEW DATABASE,建好一個(gè)數(shù)據(jù)庫
建好一個(gè)數(shù)據(jù)庫
5.右鍵點(diǎn)擊新建的數(shù)據(jù)庫——import text file(cvs,tsv)即可導(dǎo)入數(shù)據(jù)。此處要勾選“Filed name on first row”,不勾選Auto Detect。
導(dǎo)入數(shù)據(jù)1
導(dǎo)入數(shù)據(jù)2
6.復(fù)制數(shù)據(jù)庫文件.db,放在安卓項(xiàng)目文件夾的位置,就可以編寫代碼讀取數(shù)據(jù)了。