成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

輕型數(shù)據(jù)庫SQLite結合PHP的開發(fā)

瀏覽:132日期:2024-02-02 13:26:17

SQLite是一款輕型的數(shù)據(jù)庫,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結合,比如Tcl、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。

SQLite雖然很小巧,但是支持的SQL語句不會遜色于其他開源數(shù)據(jù)庫,它支持的SQL包括:

ATTACH DATABASE BEGIN TRANSACTION comment COMMIT TRANSACTION COPY CREATE INDEX CREATE TABLE CREATE TRIGGER CREATE VIEW DELETE DETACH DATABASE DROP INDEX DROP TABLE DROP TRIGGER DROP VIEW END TRANSACTION EXPLAIN expression INSERT ON CONFLICT clause PRAGMA REPLACE ROLLBACK TRANSACTION SELECT UPDATE

同時它還支持事務處理功能等等。也有人說它象Microsoft的Access,有時候真的覺得有點象,但是事實上它們區(qū)別很大。比如SQLite支持跨平臺,操作簡單,能夠使用很多語言直接創(chuàng)建數(shù)據(jù)庫,而不象Access一樣需要Office的支持。如果你是個很小型的應用,或者你想做嵌入式開發(fā),沒有合適的數(shù)據(jù)庫系統(tǒng),那么現(xiàn)在你可以考慮使用SQLite。目前它的最新版本是 3.2.2,它的官方網(wǎng)站是:http://www.sqlite.org,能在上面獲得源代碼和文檔。同時因為數(shù)據(jù)庫結構簡單,系統(tǒng)源代碼也不是很多,也適合想研究數(shù)據(jù)庫系統(tǒng)開發(fā)的專業(yè)人士。

現(xiàn)在我們開始簡單的介紹,主要我是想講清楚幾個問題,一是如何安裝使用,二是如何跟PHP結合開發(fā)。

一、安裝

1. Windows平臺

下載windows下的文件,其實就是一個命令行程序,(下載地址:http://www.sqlite.org/sqlite-3_2_2.zip),這個命令行程序用來包括生成數(shù)據(jù)庫文件、執(zhí)行SQL查詢、備份數(shù)據(jù)庫等等功能。下載后比如我們解壓縮到 D:Downloadssqlitesqlite-3_2_2 這個目錄下,那么我們進入cmd,并且進入該目錄:cd D:Downloadssqlitesqlite-3_2_2D:Downloadssqlitesqlite-3_2_2>sqlite3 test.db# 如果test.db不存在,那么就產生一個數(shù)據(jù)庫文件,如果存在就直接使用該數(shù)據(jù)庫文件,相當于mysql中的useSQLite version 3.2.2Enter '.help' for instructionssqlite> # SQLite的提示符,如果想查看命令幫助輸入 .help,在sqlite中所有系統(tǒng)命令都是 . 開頭的:sqlite> .help.databases;;List names and files of attached databases.dump ?TABLE? ...;;;Dump the database in an SQL text format.echo ON|OFFTurn command echo on or off.exit; Exit this program.explain ON|OFF;;;;;Turn output mode suitable for EXPLAIN on or off..header(s) ON|OFF;;;Turn display of headers on or off.help; Show this message.import FILE TABLE;;Import data from FILE into TABLE.indices TABLE Show names of all indices on TABLE.mode MODE ?TABLE?;;Set output mode where MODE is one of: csv;;;Comma-separated values columnLeft-aligned columns.; (See .width) html;;HTML <table> code insertSQL insert statements for TABLE line;;One value per line list;;Values delimited by .separator string tabs;;Tab-separated values tcl;;;TCL list elements.nullvalue STRING;;;Print STRING in place of NULL values.output FILENAME;;;;Send output to FILENAME.output stdout Send output to the screen.prompt MAIN CONTINUE; Replace the standard prompts.quit; Exit this program.read FILENAME Execute SQL in FILENAME.schema ?TABLE?;;;;;Show the CREATE statements.separator STRING;;;Change separator used by output mode and .import.show; Show the current values for various settings.tables ?PATTERN?;;;List names of tables matching a LIKE pattern.timeout MS;Try opening locked tables for MS milliseconds.width NUM NUM ...;;Set column widths for 'column' modesqlite>www.mypchelp.cn# 我們創(chuàng)建一個數(shù)據(jù)庫catlogsqlite> create table catalog( ...> id integer primarykey, ...> pid integer, ...> name varchar(10) UNIQUE ...> );sqlite># 如果表存在就會提示:SQL error: table catalog already exists# 我們創(chuàng)建索引信息create index catalog_idx on catalog (id asc); # 我們查看表的信息,看有多少個表sqlite> .tableaa;;;;catalog# 查看表的結構:sqlite> .schema catalogCREATE TABLE catalog(id integer primary key,pid integer,name varchar(10) UNIQUE);CREATE INDEX catalog_idx on catalog(id asc);# 給數(shù)據(jù)表插入一條記錄sqlite> insert into catalog (ppid,name) values ('001','heiyeluren');# 成功無任何提示,如果表達式錯誤提示錯誤信息:SQL error: near 'set': syntax error# 檢索有多少條記錄sqlite> select count(*) from catalog;1# 檢索搜索記錄sqlite> select * from catalog;1|1|heiyeluren

反正使用標準的SQL來操作就沒有問題,不清楚可以去官方網(wǎng)站上查看幫助信息。另外還要說明的是SQLite不支持修改表結構,如果要修改表結構,只有刪除表重新再建立,所以建立表的時候一定要考慮擴展性。估計以后這方面的功能會加強。

2. Linux/Unix 平臺

error: 目前還沒裝過,呵呵,不過估計跟Windows差不多,改天把這部分內容補上。

二、PHP對SQLite的開發(fā)

PHP 5開始不再默認支持Mysql,而是默認支持SQLite,可見它的影響力多么大,所以如果你想做SQLite的PHP開發(fā),建議你使用PHP 5.0.0以上版本,我目前使用的是 PHP 5.0.4版本,直接支持SQLite擴展,這里我就不仔細講如何安裝PHP擴展,如果不清楚可以查看PHP相關文檔。這里我主要是講針對SQLite的開發(fā)。目前PHP的主流DB類都支持SQLite的驅動,包括PEAR::DB類、ADOdb類都支持,所以使用DB來來做開發(fā)也是個好的選擇。

(以下操作為了簡便,都是再Windows xp平臺進行的)

1. 使用PHP操作已經建立好的sqlite數(shù)據(jù)庫

如果你有一個已經通過sqlite.exe建立好了的數(shù)據(jù)庫和表結構,那么你就能夠直接對它進行操作。php中針對sqlite的處理函數(shù)比較多,你可以查看PHP手冊獲得詳細信息。

我們使用sqlite_open()函數(shù)來打開一個sqlite數(shù)據(jù)庫,它成功返回一個操作資源,失敗返回false,那么以后的所有操作都是在這個資源上進行的,執(zhí)行一個sql查詢使用sqlite_query函數(shù)。

下面我假設你在當前PHP程序目錄下有一個abc.db的sqlite數(shù)據(jù)庫文件,我們對該文件進行操作:

<?php//打開sqlite數(shù)據(jù)庫$db = @sqlite_open('abc.db');//異常處理if (!$db) die('Connection Sqlite failed.n');//添加一個叫做foo的數(shù)據(jù)庫@sqlite_query($db, 'CREATE TABLE foo (bar varchar(10))');//插入一條記錄@sqlite_query($db, 'INSERT INTO foo VALUES ('fnord')');//檢索所有記錄$result = @sqlite_query($db, 'select bar from foo');//打印獲取的結果print_r(sqlite_fetch_array($result));

?>我們看到的輸出結果是:

Array( [0] => fnord [bar] => fnord)

證明我們代碼執(zhí)行成功,沒有輸入請檢查程序,或者你的數(shù)據(jù)庫文件是否存在。

那么有了這個基本操作,你就能夠考慮使用更復雜的操作和SQL來操作它,讓它幫你管理信息,你可以做一個留言本,或者做一個CMS系統(tǒng),我想都是沒有問題的。

2. 使用PHP建立數(shù)據(jù)庫并且操作

如果你沒有任何sqlite.exe之類的工具,那么你也能夠通過php來創(chuàng)建一個sqlite數(shù)據(jù)庫,并且對它進行管理。其實通過sqlite.exe程序建立的數(shù)據(jù)庫,內容是空的,其實只有后來等創(chuàng)建表,添加數(shù)據(jù)以后,數(shù)據(jù)庫文件才有,那么我們是不是能夠手工添加一個文件,比如一個空的 test.db 文件,并且對它進行操作。這是完全可以,下面我們就使用PHP程序來完成創(chuàng)建一個數(shù)據(jù)庫,并且執(zhí)行簡單的建立數(shù)據(jù)表,插入數(shù)據(jù)和檢索數(shù)據(jù)的功能。

首先我們來看代碼:(代碼比較長,但比較容易理解)

<?php/*** 文件:sqlite.php* 功能:對sqlite數(shù)據(jù)庫的處理* 作者:heiyeluren* 時間:2005-8-5*/define('LN', __LINE__);//行號define('FL', __FILE__);//當前文件define('DEBUG', 0);//調試開關

$db_name = 'heiyeluren.db';//創(chuàng)建數(shù)據(jù)庫文件,文件內容為空if (!file_exists($db_name)) {if (!($fp = fopen($db_name, 'w+'))) { exit(error_code(-1, LN));}fclose($fp);}//打開數(shù)據(jù)庫文件if (!($db = sqlite_open($db_name))) {exit(error_code(-2, LN));}//產生數(shù)據(jù)表結構if (!sqlite_query($db, 'DROP TABLE test')) {exit(error_code(-3, LN));}if (!sqlite_query($db, 'CREATE TABLE test (id integer primary key,pid integer,name varchar(10) UNIQUE)')) {exit(error_code(-3, LN));}//插入一條數(shù)據(jù)if (!sqlite_query($db, ' INSERT INTO test (name) VALUES ('heiyeluren') ')) {exit(error_code(-4, LN));}//把數(shù)據(jù)檢索出來if (!($result = sqlite_query($db, 'SELECT * FROM test'))) {exit(error_code(-5, LN));}

//獲取檢索數(shù)據(jù)并顯示while ($array = sqlite_fetch_array($result)) {echo 'ID: '. $array[id] .'<br>Name: '. $array[name] ;}

/* 錯誤信息代碼函數(shù) */function error_code($code, $line_num, $debug=DEBUG){if ($code<-6 || $code>-1) { return false;}switch($code) { case -1: $errmsg = 'Create database file error.'; break; case -2: $errmsg = 'Open sqlite database file failed.'; break; case -3: $errmsg = 'Create table failed, table already exist.'; break; case -4: $errmsg = 'Insert data failed.'; break; case -5: $errmsg = 'Query database data failed.'; break; case -6: $errmsg = 'Fetch data failed.'; break; case -7: $errmsg = ''; break; default: $errmsg = 'Unknown error.';}

$m = '<b>[ Error ]</b><br>File: '. basename(FL) .' <br>Line: '. LN .'<br>Mesg: '. $errmsg .'';if (!$debug) { ($m = $errmsg);}return $m;}

?>

如果你操作無誤的話,那么程序最后輸出:

ID: 1Name: heiyeluren

我們以上的程序包括了比較完整的功能,有調試、異常處理、存取數(shù)據(jù)庫等功能,算是一個簡單應用。如果你有興趣也可以進行擴展。

* 結束:

我們基本的操作就講到這里,以后有空我會把內容補全。如果大家有興趣可以去研究一下,也許你的個人主頁就需要這樣的小型數(shù)據(jù)庫來幫助你。

* 參考文檔:http://www.donews.net/limodou/archive/2004/03/21/7997.aspxhttp://www.linuxsir.org/bbs/showthread.php?p=1213668#post1213668

* SQLite資源官方網(wǎng)站:http://www.sqlite.orgSQL語法: http://www.sqlite.org/lang.html開發(fā)文檔:http://www.sqlite.org/docs.html常見問題:http://www.sqlite.org/faq.html下載地址:http://www.sqlite.org/download.html

Author: heiyelurenDate: 2005-8-5

標簽: PHP
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
中文日韩在线| 亚洲国产sm捆绑调教视频| 国产精品不卡在线| 成人一道本在线| 欧美精品日韩精品| 久久99精品国产91久久来源| 色婷婷综合久久久久中文一区二区 | 亚洲成人av一区| 亚洲国产精品123| 欧美国产精品一区二区| 99免费精品在线| 欧美精品一区二区蜜臀亚洲| 丁香婷婷综合五月| 精品美女一区二区| 99精品视频在线播放观看| 精品成人a区在线观看| 成人91在线观看| 2023国产精品| 99久久99久久精品国产片果冻| 欧美r级电影在线观看| www.欧美精品一二区| 久久品道一品道久久精品| 99视频国产精品| 国产清纯白嫩初高生在线观看91| 欧美在线看片| 国产免费成人在线视频| 国外精品视频| 亚洲欧洲日韩av| aa成人免费视频| 亚洲资源中文字幕| 久久久久久色| 美女在线视频一区| 欧美日韩一区国产| 粉嫩av一区二区三区粉嫩 | 一区二区三区视频在线播放| 亚洲精品你懂的| 老妇喷水一区二区三区| 久久国产麻豆精品| 日韩一区二区三区精品视频| 97久久精品人人做人人爽50路| 日本一区二区三级电影在线观看 | 色哟哟国产精品免费观看| 毛片av一区二区| 欧美日韩免费高清一区色橹橹 | 亚洲电影视频在线| 欧美在线小视频| 国产91富婆露脸刺激对白| 久久精品一区二区三区四区| 亚洲午夜一级| 一区二区三区在线视频观看| 色88888久久久久久影院野外| 国产美女一区二区| 精品sm捆绑视频| 尹人成人综合网| 日韩精品一级二级| 欧美一区二区三区免费大片| 91麻豆精品视频| 亚洲一区国产视频| 欧美精品在线一区二区| 欧美xxx在线观看| 亚洲综合成人在线| 在线不卡免费欧美| 欧美日韩精选| 偷窥国产亚洲免费视频| 在线不卡中文字幕| 国产在线观看一区| 日日欢夜夜爽一区| 日韩欧美国产一区在线观看| 亚洲天堂偷拍| 青娱乐精品在线视频| 精品国产一区二区三区久久久蜜月 | 国产一区日韩二区欧美三区| 久久久精品蜜桃| 国产精品一卡| 国产成人自拍在线| 亚洲视频在线观看一区| 欧美视频自拍偷拍| 欧美 日韩 国产一区二区在线视频 | 欧美日韩综合网| 丝袜美腿一区二区三区| 日韩精品一区在线观看| 亚洲精选成人| 国模冰冰炮一区二区| 中文字幕欧美区| 欧美性猛交xxxxxxxx| 欧美chengren| 丝袜美腿高跟呻吟高潮一区| 精品久久一区二区三区| 国产精品视频福利| 成人网在线免费视频| 亚洲精品成人天堂一二三| 欧美久久久久免费| 亚洲精品国产精品国自产观看| 韩国一区二区视频| 一区在线观看免费| 91麻豆精品国产自产在线观看一区| 黄色日韩精品| 国模冰冰炮一区二区| 亚洲女与黑人做爰| 5566中文字幕一区二区电影| 亚洲免费观看| 粉嫩av一区二区三区在线播放| 亚洲一区二区中文在线| 久久综合九色欧美综合狠狠| 色94色欧美sute亚洲线路一久 | 亚洲精品视频自拍| 欧美一区二区三区喷汁尤物| 国产日韩亚洲欧美精品| 成人av片在线观看| 日韩影视精彩在线| 中日韩av电影| 69久久夜色精品国产69蝌蚪网| 亚洲日本久久| 国产一区二区三区免费看| 一区二区三区小说| 久久品道一品道久久精品| 日本韩国一区二区三区视频| 亚洲欧美一级二级三级| 激情综合网最新| 亚洲一区二区三区影院| 久久久综合激的五月天| 欧美日韩在线电影| 国产日韩亚洲欧美精品| 91在线你懂得| 国内偷窥港台综合视频在线播放| 亚洲黄色录像片| 久久精品一区二区三区不卡| 7777精品伊人久久久大香线蕉完整版 | 色噜噜狠狠色综合中国 | 91福利视频网站| 亚洲激情专区| 91伊人久久大香线蕉| 韩国视频一区二区| 三级成人在线视频| 亚洲六月丁香色婷婷综合久久| 久久免费看少妇高潮| 欧美另类高清zo欧美| 老司机精品视频网站| 一级成人国产| 狠狠88综合久久久久综合网| www.性欧美| 国产精华液一区二区三区| 免费成人美女在线观看| 亚洲午夜久久久久久久久电影院 | 久久超碰97中文字幕| 亚洲国产成人精品视频| 亚洲欧美区自拍先锋| 国产精品午夜在线观看| 久久久高清一区二区三区| 日韩欧美另类在线| 91精品综合久久久久久| 欧洲精品一区二区| 久久久久久穴| 欧美主播一区二区三区美女 久久精品人| 欧美私人啪啪vps| 91网页版在线| 成人99免费视频| 国产xxx精品视频大全| 精品亚洲成av人在线观看| 伦理电影国产精品| 亚洲国产精品人人做人人爽| 亚洲区小说区图片区qvod| 中文字幕亚洲视频| 欧美激情一区二区三区不卡 | 乱人伦精品视频在线观看| 亚洲高清激情| 一区免费视频| 亚洲成人直播| 伊人久久婷婷色综合98网| 精品1区2区3区4区| 在线日本成人| 亚洲国产精品一区二区第一页| 亚洲第一在线综合在线| 亚洲一级影院| 亚洲承认在线| 亚洲视频大全| 亚洲三级网站| 国产精品久久久久久久久婷婷 | 欧美一区二区三区日韩视频| 欧美日韩午夜影院| 在线看国产一区二区| 麻豆九一精品爱看视频在线观看免费| 99视频国产精品免费观看| 亚洲国产精品一区| 99re热精品| 国产欧美亚洲一区| 日韩一级网站| 亚洲精品视频一区二区三区| 国语对白精品一区二区| 欧美日本韩国在线| 欧美 日韩 国产一区二区在线视频| 成人免费视频一区| 国产成人三级在线观看| 国产成人在线视频网站| 成人永久免费视频| 99久久精品国产精品久久| 北条麻妃一区二区三区| 99v久久综合狠狠综合久久| 女同一区二区| 亚洲精品九九|