免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
輕型數(shù)據(jù)庫(kù)SQLite結(jié)合PHP的開(kāi)發(fā)

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

 


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

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

SQLite雖然很小巧,但是支持的SQL語(yǔ)句不會(huì)遜色于其他開(kāi)源數(shù)據(jù)庫(kù),它支持的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

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

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

一、安裝

1. Windows平臺(tái)

下載windows下的文件,其實(shí)就是一個(gè)命令行程序,(下載地址:http://www.sqlite.org/sqlite-3_2_2.zip),這個(gè)命令行程序用來(lái)包括生成數(shù)據(jù)庫(kù)文件、執(zhí)行SQL查詢、備份數(shù)據(jù)庫(kù)等等功能。
下載后比如我們解壓縮到 D:\Downloads\sqlite\sqlite-3_2_2 這個(gè)目錄下,那么我們進(jìn)入cmd,并且進(jìn)入該目錄:
cd D:\Downloads\sqlite\sqlite-3_2_2
D:\Downloads\sqlite\sqlite-3_2_2>sqlite3 test.db
# 如果test.db不存在,那么就產(chǎn)生一個(gè)數(shù)據(jù)庫(kù)文件,如果存在就直接使用該數(shù)據(jù)庫(kù)文件,相當(dāng)于mysql中的use
SQLite version 3.2.2
Enter ".help" for instructions
sqlite>
# SQLite的提示符,如果想查看命令幫助輸入 .help,在sqlite中所有系統(tǒng)命令都是 . 開(kāi)頭的:
sqlite> .help
.databases             List names and files of attached databases
.dump ?TABLE? ...      Dump the database in an SQL text format
.echo ON|OFF           Turn 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
                         column   Left-aligned columns.  (See .width)
                         html     HTML <table> code
                         insert   SQL 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" mode
sqlite>

# 我們創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)catlog
sqlite> create table catalog(
   ...> id integer primarykey,
   ...> pid integer,
   ...> name varchar(10) UNIQUE
   ...> );
sqlite>
# 如果表存在就會(huì)提示:
SQL error: table catalog already exists
# 我們創(chuàng)建索引信息
create index catalog_idx on catalog (id asc);
# 我們查看表的信息,看有多少個(gè)表
sqlite> .table
aa       catalog
# 查看表的結(jié)構(gòu):
sqlite> .schema catalog
CREATE 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');
# 成功無(wú)任何提示,如果表達(dá)式錯(cuò)誤提示錯(cuò)誤信息:
SQL error: near "set": syntax error
# 檢索有多少條記錄
sqlite> select count(*) from catalog;
1
# 檢索搜索記錄
sqlite> select * from catalog;
1|1|heiyeluren

反正使用標(biāo)準(zhǔn)的SQL來(lái)操作就沒(méi)有問(wèn)題,不清楚可以去官方網(wǎng)站上查看幫助信息。另外還要說(shuō)明的是SQLite不支持修改表結(jié)構(gòu),如果要修改表結(jié)構(gòu),只有刪除表重新再建立,所以建立表的時(shí)候一定要考慮擴(kuò)展性。估計(jì)以后這方面的功能會(huì)加強(qiáng)。


2. Linux/Unix 平臺(tái)

error: 目前還沒(méi)裝過(guò),呵呵,不過(guò)估計(jì)跟Windows差不多,改天把這部分內(nèi)容補(bǔ)上。

 

二、PHP對(duì)SQLite的開(kāi)發(fā)

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

(以下操作為了簡(jiǎn)便,都是再Windows xp平臺(tái)進(jìn)行的)

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

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

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

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


<?php
//打開(kāi)sqlite數(shù)據(jù)庫(kù)
$db = @sqlite_open("abc.db");
//異常處理
if (!$db) die("Connection Sqlite failed.\n");
//添加一個(gè)叫做foo的數(shù)據(jù)庫(kù)
@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');
//打印獲取的結(jié)果
print_r(sqlite_fetch_array($result));

?>
我們看到的輸出結(jié)果是:

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

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

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


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

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

首先我們來(lái)看代碼:(代碼比較長(zhǎng),但比較容易理解)

<?php
/**
 * 文件:sqlite.php
 * 功能:對(duì)sqlite數(shù)據(jù)庫(kù)的處理
 * 作者:heiyeluren
 * 時(shí)間:2005-8-5
 */
define("LN", __LINE__);//行號(hào)
define("FL", __FILE__);//當(dāng)前文件
define("DEBUG", 0);//調(diào)試開(kāi)關(guān)

$db_name = "heiyeluren.db";
//創(chuàng)建數(shù)據(jù)庫(kù)文件,文件內(nèi)容為空
if (!file_exists($db_name)) {
 if (!($fp = fopen($db_name, "w+"))) {
  exit(error_code(-1, LN));
 }
 fclose($fp);
}
//打開(kāi)數(shù)據(jù)庫(kù)文件
if (!($db = sqlite_open($db_name))) {
 exit(error_code(-2, LN));
}
//產(chǎn)生數(shù)據(jù)表結(jié)構(gòu)
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ù)檢索出來(lái)
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] ;
}

/* 錯(cuò)誤信息代碼函數(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;
}

?>

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

ID: 1
Name: heiyeluren


我們以上的程序包括了比較完整的功能,有調(diào)試、異常處理、存取數(shù)據(jù)庫(kù)等功能,算是一個(gè)簡(jiǎn)單應(yīng)用。如果你有興趣也可以進(jìn)行擴(kuò)展。

 

* 結(jié)束:

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

 

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何用C語(yǔ)言操作sqlite3,一文搞懂
linux php mysql數(shù)據(jù)庫(kù)備份代碼
SQLITE的C 調(diào)用示例
Sqlite3小結(jié)(小型數(shù)據(jù)庫(kù)中增刪改查的操作)
嵌入式數(shù)據(jù)庫(kù)SQLite3相關(guān)操作
linux c語(yǔ)言操作數(shù)據(jù)庫(kù)(連接sqlite數(shù)據(jù)庫(kù))
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服