監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設(shè)計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉
鷹潭網(wǎng)站建設(shè)公司

當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 鷹潭OA > 鷹潭網(wǎng)站建設(shè)公司

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

申請免費試用、咨詢電話:400-8352-114

 鷹潭網(wǎng)站建設(shè) www.diyphp.net

SQLite是一款輕型的數(shù)據(jù)庫,它的描繪方針是嵌入式的,而且當(dāng)時曾經(jīng)在許多嵌入式產(chǎn)物中運用了它,它占用資源十分的低,在嵌入式設(shè)備中,可以只需求幾百K的內(nèi)存就夠了。它可以撐持Windows/Linux/Unix等等干流的操作體系,還可以跟許多順序言語相連系,比方Tcl、PHP、Java等,還有ODBC接口,相同比起Mysql、PostgreSQL這兩款開源國際聞名的數(shù)據(jù)庫辦理體系來講,它的處置速度比他們都快。

SQLite固然很細(xì)巧,可是撐持的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

還它還撐持事務(wù)處置功用等等。也有人說它象Microsoft的Access,有時分真的覺得有點象,可是事實上它們差異很大。比方SQLite撐持跨平臺,操作簡略,可以運用許多言語直接創(chuàng)立數(shù)據(jù)庫,而不象Access相同需求Office的撐持。若是你是個很小型的運用,或許你想做嵌入式開發(fā),沒有適宜的數(shù)據(jù)庫體系,那么如今你可以思索運用SQLite。當(dāng)時它的最新版別是 3.2.2,它的官方網(wǎng)站是:http://www.sqlite.org,能在上面取得源代碼和文檔。還由于數(shù)據(jù)庫布局簡略,體系源代碼也不是許多,也合適想研討數(shù)據(jù)庫體系開發(fā)的專業(yè)人士。

如今咱們開端簡略的引見,首要我是想講清晰幾個問題,一是如何裝置運用,二是如何跟PHP連系開發(fā)。

一、裝置

1. Windows平臺

下載windows下的文件,其實就是一個指令行順序,(下載地址:http://www.sqlite.org/sqlite-3_2_2.zip),這個指令行順序用來包羅生成數(shù)據(jù)庫文件、履行SQL查詢、備份數(shù)據(jù)庫等等功用。
下載后比方咱們解壓縮到 D:Downloadssqlitesqlite-3_2_2 這個目錄下,那么咱們進(jìn)入cmd,而且進(jìn)入該目錄:
cd D:Downloadssqlitesqlite-3_2_2
D:Downloadssqlitesqlite-3_2_2>sqlite3 test.db
# 若是test.db不存在,那么就發(fā)生一個數(shù)據(jù)庫文件,若是存在就直接運用該數(shù)據(jù)庫文件,相當(dāng)于mysql中的use
SQLite version 3.2.2
Enter ".help" for instructions
sqlite>
# SQLite的提示符,若是想檢查指令協(xié)助輸入 .help,在sqlite中一切體系指令都是 . 最初的:
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


 

 

橫豎運用規(guī)范的SQL來操作就沒有問題,不清晰可以去官方網(wǎng)站上檢查協(xié)助信息。別的還要闡明的是SQLite不撐持修正表布局,若是要修正表布局,只要刪去表從頭再樹立,所以樹立表的時分一定要思索擴(kuò)大性。估量今后這方面的功用會加強。


2. Linux/Unix 平臺

error: 當(dāng)時還沒裝過,呵呵,不過估量跟Windows差不多,改天把這部分內(nèi)容補上。


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

PHP 5開端不再默許撐持Mysql,而是默許撐持SQLite,可見它的影響力多么大,所以若是你想做SQLite的PHP開發(fā),主張你運用PHP 5.0.0以上版別,我當(dāng)時運用的是 PHP 5.0.4版別,直接撐持SQLite擴(kuò)大,這里我就不細(xì)心講如何裝置PHP擴(kuò)大,若是不清晰可以檢查PHP關(guān)聯(lián)文檔。
這里我首要是講對準(zhǔn)SQLite的開發(fā)。當(dāng)時PHP的干流DB類都撐持SQLite的驅(qū)動,包羅PEAR::DB類、ADOdb類都撐持,所以運用DB來來做開發(fā)也是個好的挑選。

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

1. 運用PHP操作曾經(jīng)樹立好的sqlite數(shù)據(jù)庫

若是你有一個曾經(jīng)經(jīng)過sqlite.exe樹立好了的數(shù)據(jù)庫和表布局,那么你就可以直接對它進(jìn)行操作。php中對準(zhǔn)sqlite的處置函數(shù)比擬多,你可以檢查PHP手冊取得詳細(xì)信息。

咱們運用sqlite_open()函數(shù)來翻開一個sqlite數(shù)據(jù)庫,它成功回來一個操作資源,失利回來false,那么今后的一切操作都是在這個資源上進(jìn)行的,履行一個sql查詢運用sqlite_query函數(shù)。

下面我假定你在當(dāng)時PHP順序目錄下有一個abc.db的sqlite數(shù)據(jù)庫文件,咱們對該文件進(jìn)行操作:


//翻開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))");
//刺進(jìn)一條記載
@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
)

證明咱們代碼履行成功,沒有輸入請檢查順序,或許你的數(shù)據(jù)庫文件能否存在。

那么有了這個根本操作,你就可以思索運用更雜亂的操作和SQL來操作它,讓它幫你辦理信息,你可以做一個留言本,或許做一個CMS體系,我想都是沒有問題的。


2. 運用PHP樹立數(shù)據(jù)庫而且操作

若是你沒有任何sqlite.exe之類的東西,那么你也可以經(jīng)過php來創(chuàng)立一個sqlite數(shù)據(jù)庫,而且對它進(jìn)行辦理。
其實經(jīng)過sqlite.exe順序樹立的數(shù)據(jù)庫,內(nèi)容是空的,其實只要后來等創(chuàng)立表,增加數(shù)據(jù)今后,數(shù)據(jù)庫文件才有,那么咱們是不是可以手藝增加一個文件,比方一個空的 test.db 文件,而且對它進(jìn)行操作。這是完全可以,下面咱們就運用PHP順序來完結(jié)創(chuàng)立一個數(shù)據(jù)庫,而且履行簡略的樹立數(shù)據(jù)表,刺進(jìn)數(shù)據(jù)和檢索數(shù)據(jù)的功用。

首要咱們來看代碼:(代碼比擬長,但比擬簡略了解)

/**
 * 文件:sqlite.php
 * 功用:對sqlite數(shù)據(jù)庫的處置
 * 作者:heiyeluren
 * 工夫:2005-8-5
 */
define("LN", __LINE__);//行號
define("FL", __FILE__);//當(dāng)時文件
define("DEBUG", 0);//調(diào)試開關(guān)

$db_name = "heiyeluren.db";
//創(chuàng)立數(shù)據(jù)庫文件,文件內(nèi)容為空
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));
}
//發(fā)生數(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));
}
//刺進(jìn)一條數(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ù)并顯現(xiàn)
while ($array = sqlite_fetch_array($result)) {
 echo "ID: ". $array[id] ."
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 = "[ Error ]
File: ". basename(FL) ."
Line: ". LN ."
Mesg: ". $errmsg ."";
 if (!$debug) {
  ($m = $errmsg);
 }
 return $m;
}

?>

若是你操作無誤的話,那么順序最終輸出:

ID: 1
Name: heiyeluren


咱們以上的順序包羅了比擬完好的功用,有調(diào)試、反常處置、存取數(shù)據(jù)庫等功用,算是一個簡略運用。若是你有愛好也可以進(jìn)行擴(kuò)大。


* 完畢:

咱們根本的操作就講到這里,今后有空我會把內(nèi)容補全。若是我們有愛好可以去研討一下,或許你的個人主頁就需求這樣的小型數(shù)據(jù)庫來協(xié)助你。

 

 

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)立一個數(shù)據(jù)庫catlog
sqlite> 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> .table
aa       catalog
# 檢查表的布局:
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ù)表刺進(jìn)一條記載
sqlite> insert into catalog (ppid,name) values ('001','heiyeluren');
# 成功無任何提示,若是表達(dá)式過錯提示過錯信息:
SQL error: near "set": syntax error
# 檢索有多少條記載
sqlite> select count(*) from catalog;
1
# 檢索查找記載
sqlite> select * from catalog;
1|1|heiyeluren

 

發(fā)布:2007-03-31 14:59    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章:
鷹潭OA
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢

泛普鷹潭網(wǎng)站建設(shè)公司其他應(yīng)用

鷹潭軟件開發(fā)公司 鷹潭門禁系統(tǒng) 鷹潭物業(yè)管理軟件 鷹潭倉庫管理軟件 鷹潭餐飲管理軟件 鷹潭網(wǎng)站建設(shè)公司