??? 到
http://www.sqlite.org
網站(發現好多非盈利性的機構都愛用org的,呵呵,看來我的
http://www.niunan.org
還是申請對了,唉,可惜niunan.com被人家拿來了,要不然加上我現在有的niunan.net和niunan.org那就太prefect了?。┥舷螺d最新的sqlite,下載下來壓縮出來到D盤的sqlitetest目錄下,如圖:
???
??? 然后打開CMD命令窗口,切換到D盤的sqlitetest目錄下,如圖:
???
??? 新建立一個數據庫,在CMD窗口下輸入
???
??? test就是我們的數據庫文件名,注意這里沒有后綴名,實際你也可以給他一個后綴名的,比如sqlite3 test.db,甚至可以是sqlite3 test.php,執行了這條命令之后,假如在當前的sqlitetest目錄下沒有建立過test數據庫的話則是建立一個空的數據庫,數據庫名叫test,否則則是打開當前sqlitetest目錄下的test數據庫,注意,如果是新建立數據庫的話那么這時數據庫里是空的,這時候在當前的sqlitetest目錄下新建立的數據庫test并不會顯示出來。如圖,這是執行了創建命令之后的sqlitetest目錄:
???
??? 這時我們輸入
???
??? 這時候就看到sqlitetest目錄生成的test文件了
??? 接下來就輪到建立表了,在官網上看了一下,其實官網上的英文說明文檔也都是些簡單的英文的,基本上連詞成句都能知道是什么意思了,上面說到sqlite數據庫的表的字段的類型其實就5種類型(TEXT、NUMERIC、INTEGER、REAL、NONE),而且好像在建立表的時候寫的類型不必寫剛剛列出的幾種類型的全稱的,上面說
??? 1、如果你寫的類型中含有int字符的那么他就是INTEGER
??? 2、如果寫的類型中含有"CHAR", "CLOB", 或者 "TEXT" 字符的那么就是TEXT類型
??? 3、如果寫的類型中含有 "REAL", "FLOA", 或者 "DOUB" 字符的那么就是REAL類型
??? 4、其他幾句英文不太明白說什么了,呵呵,英文好的朋友可以來這里看, http://www.sqlite.org/datatype3.html
??????? 我們試試看創建一張表看看,在這里我創建的同時也設置主鍵primary key,不知道這個sqlite創建主鍵是不是這樣子設置的,我們輸入創建table的指令:
???
??? 我們可以看到,如果輸入的語句出錯的話是會直接在當前命令窗口中提示的,輸入正確的話就什么都沒提示了,而且每條SQL語句后都必須以分號;結尾,這個和MYSQL一樣
??? 我們可以通過
???
??? 那么除了.database和.table這兩個sqlite指令外還有哪些指令呢?我們可以通過
?????
??? 注意,在輸入sqlite指令的時候不要又多余來個分號;結尾。。。
??? 我們可以看到,又是一大串的E文,其實也都是些簡單的E文,連詞成句也基本搞掂。。
??? 看到有個
???
??? 可以看到,該指令把表的創建語句給我們打出來了。
??? 我們來插入一條數據再選擇出來試試看,在這里我不插入ID列,看看有沒有什么問題。
???
??? 我們可以看到,插進去了,但是選出來的前面的ID號是空的,我們再插入一條再選擇看看
???
??? 暈,也能插進去,也能選擇出來,那么就是我前面建立的SQL語句中的primary key不起作用了,后來自己上網搜索了一下,發現其實在建立表的時候設置主鍵的時候必須得寫integer primary key,這樣在每插入一條數據庫時候那個字段都會自動增長的,相應的起到一個主鍵的功能,我把整個表刪除了再重新建立了一次,如圖:
???
??? OK,這時我們插入數據的時候可以看到,前面的ID字段自增了,嘿嘿。
??? 如果我們有很多條語句要批量插入的話怎么辦?我們在sqlitetest目錄下建立一個sql_ins.txt文本文檔,里面寫上我們的插入語句,如圖:
???
???? 然后我們可以使用sqlite中的.read指令來進行讀取,如圖:
???
??? 這樣我們就成功的導入了我們的數據了。
??? 接下來是一個字段連接的問題,這個問題群里的朋友提過,自己試著用MSSQL的方法測試不成功,正常來說應該是如下SQL語句:
[sql]select '姓名:'+name+',年齡:'+age from person;
[/sql]??? 但是在SQLITE中執行了會選擇出錯誤的數據,最后搜索后發現原來sqlite中的連接字符是||或符號,正確的SQL語句應該是:
[sql]select '姓名:'||name||',年齡:'||age from person;
[/sql]???
??? 接下來,就是至今為止最激動人心的時刻,就是sqlite的分頁,呵呵,和MYSQL一樣的,可以直接用limit來進行分頁了,就是因為這個,我開始有把我的Access的博客轉為sqlite存儲數據的沖動了。呵呵。。。
???
??? 命令行的操作就到這里,接下來該用圖形管理工具了。。試用了下,感覺sqlitespy不錯,其實我也就用過sqlitespy,其他的管理工具都沒用過。。呵呵。。大家可以到該網站下載最新版: http://www.yunqa.de/delphi/doku.php/products/sqlitespy/index ??? 下載下來后解壓出來,其實也就兩個文件,一個Exe,另一個應該是示例數據庫:
???
??? 運行那個exe文件,可以看到是英文界面,不過都是簡單的英文,都應該能看得懂的,打開我們剛剛在命令行下創建的數據庫,注意是打開,別選成上面那個new ....新建數據庫了。
???
??? 發現雙擊了exe文件運行以后目錄下又會多出一個SQLiteSpy.db3數據庫了,應該是他自動生成的吧
???
??? 在打開的選擇數據庫的窗口中看不到我們剛剛建立的test數據庫,因為我們沒有用到后綴外,軟件默認顯示的是db3和db后綴名的文件的,我們選擇顯示所有文件,然后就可以看到了
???
??? 選擇test數據庫后打開person表,問題出來了,竟然是亂碼,暈。??墒莿倓偽覀冊贑MD命令窗口中明明是可以查詢出中文出來的
???
??? 我們執行一條語句看看,F9是執行語句
???
??? 然后我們再查看表數據,可以看到,插入的中文竟然可以正常顯示出來了
???
??? 暈啊。。搞不懂是怎么回事,應該是編碼的問題,可是我GOOGLE了蠻久都沒有找到什么解決方法
??? 先不管這些,繼續下一步,.NET查詢SQLITE,上網找了下,下載System.Data.SQLite.dll,可到這里下載 http://sqlite.phxsoftware.com/ ??? 用VS建立一個網站,把上面下載的DLL放到BIN目錄下,然后寫代碼,和平時寫的MSSQL的代碼基本一樣的,還真不錯。
???
gv是一個gridview控件,這里只是簡單的顯示表中數據而已,結果出來的界面不出所料,有亂碼,郁悶,但是最后一條記錄又不是亂碼,那條記錄是我在sqlitespy軟件中添加的
???
??? 至于怎么解決這個亂碼的問題,本人GOOGLE過多次,也找不到解決的方法,只能留待高人解決?。?!
??? 認真寫篇博客還真累人。。。整整花了一上午。。。因為這個亂碼問題,把我從access轉到sqlite的決定又降低了不少!!!
???
??? 然后打開CMD命令窗口,切換到D盤的sqlitetest目錄下,如圖:
???
??? 新建立一個數據庫,在CMD窗口下輸入
引用
sqlite3 test
,如圖:
???
??? test就是我們的數據庫文件名,注意這里沒有后綴名,實際你也可以給他一個后綴名的,比如sqlite3 test.db,甚至可以是sqlite3 test.php,執行了這條命令之后,假如在當前的sqlitetest目錄下沒有建立過test數據庫的話則是建立一個空的數據庫,數據庫名叫test,否則則是打開當前sqlitetest目錄下的test數據庫,注意,如果是新建立數據庫的話那么這時數據庫里是空的,這時候在當前的sqlitetest目錄下新建立的數據庫test并不會顯示出來。如圖,這是執行了創建命令之后的sqlitetest目錄:
???
??? 這時我們輸入
引用
.database
指令查看當前的數據庫信息后,sqlitetest目錄下才會生成一個test文件,即我們建立的數據庫,如圖:
???
??? 這時候就看到sqlitetest目錄生成的test文件了
??? 接下來就輪到建立表了,在官網上看了一下,其實官網上的英文說明文檔也都是些簡單的英文的,基本上連詞成句都能知道是什么意思了,上面說到sqlite數據庫的表的字段的類型其實就5種類型(TEXT、NUMERIC、INTEGER、REAL、NONE),而且好像在建立表的時候寫的類型不必寫剛剛列出的幾種類型的全稱的,上面說
??? 1、如果你寫的類型中含有int字符的那么他就是INTEGER
??? 2、如果寫的類型中含有"CHAR", "CLOB", 或者 "TEXT" 字符的那么就是TEXT類型
??? 3、如果寫的類型中含有 "REAL", "FLOA", 或者 "DOUB" 字符的那么就是REAL類型
??? 4、其他幾句英文不太明白說什么了,呵呵,英文好的朋友可以來這里看, http://www.sqlite.org/datatype3.html
??????? 我們試試看創建一張表看看,在這里我創建的同時也設置主鍵primary key,不知道這個sqlite創建主鍵是不是這樣子設置的,我們輸入創建table的指令:
引用
create table person(id int primary key,name nvarchar(10),age integer,address text);
如圖:
???
??? 我們可以看到,如果輸入的語句出錯的話是會直接在當前命令窗口中提示的,輸入正確的話就什么都沒提示了,而且每條SQL語句后都必須以分號;結尾,這個和MYSQL一樣
??? 我們可以通過
引用
.table
指令來查看當前的數據庫中所有的表的信息,如圖:
???
??? 那么除了.database和.table這兩個sqlite指令外還有哪些指令呢?我們可以通過
引用
.help
來查看,如圖:
?????
??? 注意,在輸入sqlite指令的時候不要又多余來個分號;結尾。。。
??? 我們可以看到,又是一大串的E文,其實也都是些簡單的E文,連詞成句也基本搞掂。。
??? 看到有個
引用
.schema
指令,我們來試試,后面跟的是表的名稱,如圖:
???
??? 可以看到,該指令把表的創建語句給我們打出來了。
??? 我們來插入一條數據再選擇出來試試看,在這里我不插入ID列,看看有沒有什么問題。
???
??? 我們可以看到,插進去了,但是選出來的前面的ID號是空的,我們再插入一條再選擇看看
???
??? 暈,也能插進去,也能選擇出來,那么就是我前面建立的SQL語句中的primary key不起作用了,后來自己上網搜索了一下,發現其實在建立表的時候設置主鍵的時候必須得寫integer primary key,這樣在每插入一條數據庫時候那個字段都會自動增長的,相應的起到一個主鍵的功能,我把整個表刪除了再重新建立了一次,如圖:
???
??? OK,這時我們插入數據的時候可以看到,前面的ID字段自增了,嘿嘿。
??? 如果我們有很多條語句要批量插入的話怎么辦?我們在sqlitetest目錄下建立一個sql_ins.txt文本文檔,里面寫上我們的插入語句,如圖:
???
???? 然后我們可以使用sqlite中的.read指令來進行讀取,如圖:
???
??? 這樣我們就成功的導入了我們的數據了。
??? 接下來是一個字段連接的問題,這個問題群里的朋友提過,自己試著用MSSQL的方法測試不成功,正常來說應該是如下SQL語句:
[sql]select '姓名:'+name+',年齡:'+age from person;
[/sql]??? 但是在SQLITE中執行了會選擇出錯誤的數據,最后搜索后發現原來sqlite中的連接字符是||或符號,正確的SQL語句應該是:
[sql]select '姓名:'||name||',年齡:'||age from person;
[/sql]???
??? 接下來,就是至今為止最激動人心的時刻,就是sqlite的分頁,呵呵,和MYSQL一樣的,可以直接用limit來進行分頁了,就是因為這個,我開始有把我的Access的博客轉為sqlite存儲數據的沖動了。呵呵。。。
???
??? 命令行的操作就到這里,接下來該用圖形管理工具了。。試用了下,感覺sqlitespy不錯,其實我也就用過sqlitespy,其他的管理工具都沒用過。。呵呵。。大家可以到該網站下載最新版: http://www.yunqa.de/delphi/doku.php/products/sqlitespy/index ??? 下載下來后解壓出來,其實也就兩個文件,一個Exe,另一個應該是示例數據庫:
???
??? 運行那個exe文件,可以看到是英文界面,不過都是簡單的英文,都應該能看得懂的,打開我們剛剛在命令行下創建的數據庫,注意是打開,別選成上面那個new ....新建數據庫了。
???
??? 發現雙擊了exe文件運行以后目錄下又會多出一個SQLiteSpy.db3數據庫了,應該是他自動生成的吧
???
??? 在打開的選擇數據庫的窗口中看不到我們剛剛建立的test數據庫,因為我們沒有用到后綴外,軟件默認顯示的是db3和db后綴名的文件的,我們選擇顯示所有文件,然后就可以看到了
???
??? 選擇test數據庫后打開person表,問題出來了,竟然是亂碼,暈。??墒莿倓偽覀冊贑MD命令窗口中明明是可以查詢出中文出來的
???
??? 我們執行一條語句看看,F9是執行語句
???
??? 然后我們再查看表數據,可以看到,插入的中文竟然可以正常顯示出來了
???
??? 暈啊。。搞不懂是怎么回事,應該是編碼的問題,可是我GOOGLE了蠻久都沒有找到什么解決方法
??? 先不管這些,繼續下一步,.NET查詢SQLITE,上網找了下,下載System.Data.SQLite.dll,可到這里下載 http://sqlite.phxsoftware.com/ ??? 用VS建立一個網站,把上面下載的DLL放到BIN目錄下,然后寫代碼,和平時寫的MSSQL的代碼基本一樣的,還真不錯。
???
gv是一個gridview控件,這里只是簡單的顯示表中數據而已,結果出來的界面不出所料,有亂碼,郁悶,但是最后一條記錄又不是亂碼,那條記錄是我在sqlitespy軟件中添加的
???
??? 至于怎么解決這個亂碼的問題,本人GOOGLE過多次,也找不到解決的方法,只能留待高人解決?。?!
??? 認真寫篇博客還真累人。。。整整花了一上午。。。因為這個亂碼問題,把我從access轉到sqlite的決定又降低了不少!!!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
