必威电竞|足球世界杯竞猜平台

SQLite
來源:互聯(lián)網(wǎng)

SQLite是一種輕型的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),它是一個(gè)自包含、零配置的、無服務(wù)器的、事務(wù)性的SQL數(shù)據(jù)庫(kù)引擎。SQLite的設(shè)計(jì)目標(biāo)是成為一個(gè)小型、快速、可靠的數(shù)據(jù)庫(kù)引擎,它不像其他的數(shù)據(jù)庫(kù)管理系統(tǒng)需要獨(dú)立運(yùn)行,而是將數(shù)據(jù)庫(kù)存儲(chǔ)在一個(gè)單一的文件中。SQLite是一種開源軟件,它的源代碼可以免費(fèi)下載和使用。SQLite支持多種操作系統(tǒng),包括Linux、Windows和Mac OS X等。由于SQLite的體積小、速度快、易于使用和部署,因此在很多手持移動(dòng)設(shè)備和嵌入式系統(tǒng)中得到廣泛應(yīng)用。

SQLite項(xiàng)目于2000年5月9日啟動(dòng),2000年,D. Richard Hipp設(shè)計(jì)SQLite是為了不需要管理即可操作程序,2000年8月,SQLite1.0發(fā)布GNU數(shù)據(jù)庫(kù)管理器(GNU Database Manager),2011年Hipp宣布,向SQLiteDB添加UNQl接口,開發(fā)UNQLite(面向文檔的數(shù)據(jù)庫(kù))。

工作原理

不像常見的客戶-服務(wù)器范例,SQLite引擎不是個(gè)程序與之通信的獨(dú)立進(jìn)程,而是連接到程序中成為它的一個(gè)主要部分。所以主要的通信協(xié)議是在編程語言內(nèi)的直接API調(diào)用。這在消耗總量、延遲時(shí)間和整體簡(jiǎn)單性上有積極的作用。整個(gè)數(shù)據(jù)庫(kù)(定義、表、索引和數(shù)據(jù)本身)都在宿主主機(jī)上存儲(chǔ)在一個(gè)單一的文件中。它的簡(jiǎn)單的設(shè)計(jì)是通過在開始一個(gè)事務(wù)的時(shí)候鎖定整個(gè)數(shù)據(jù)文件而完成的。

功能特性

1. ACID事務(wù)

2. 零配置 – 無需安裝和管理配置

3.儲(chǔ)存在單一磁盤文件中的一個(gè)完整的數(shù)據(jù)庫(kù)

4.數(shù)據(jù)庫(kù)文件可以在不同字節(jié)順序的機(jī)器間自由的共享

5.支持?jǐn)?shù)據(jù)庫(kù)大小至2TB

6. 足夠小, 大致13萬行C代碼, 4.43M

7. 比一些流行的數(shù)據(jù)庫(kù)在大部分普通數(shù)據(jù)庫(kù)操作要快

8. 簡(jiǎn)單, 輕松的API

9. 包含TCL科技綁定, 同時(shí)通過Wrapper支持其他語言的綁定

10. 良好注釋的源代碼, 并且有著90%以上的測(cè)試覆蓋率

11. 獨(dú)立: 沒有額外依賴

12. 源碼完全的開源, 你可以用于任何用途, 包括出售它

13. 支持多種開發(fā)語言,C, C++, PHP, Perl, Java, C#,Python,Ruby

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

ATTACH DATABASE

BEGIN TRANSACTION

comment

COMMIT TRANSACTION

COPY

CREATE INDEX

CREATE TABLE

CREATE TRIGGER有限公司

CREATE 視圖

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ù)處理功能等等。也有人說它象微軟的Access,有時(shí)候真的覺得有點(diǎn)象,但是事實(shí)上它們區(qū)別很大。比如SQLite 支持跨平臺(tái),操作簡(jiǎn)單,能夠使用很多語言直接創(chuàng)建數(shù)據(jù)庫(kù),而不象Access一樣需要Office的支持。如果你是個(gè)很小型的應(yīng)用,或者你想做嵌入式開發(fā),沒有合適的數(shù)據(jù)庫(kù)系統(tǒng),那么你可以考慮使用SQLite。到2013年10月17日最新版本是 3.8.1 。能在上面獲得源代碼和文檔。同時(shí)因?yàn)閿?shù)據(jù)庫(kù)結(jié)構(gòu)簡(jiǎn)單,系統(tǒng)源代碼也不是很多,也適合想研究數(shù)據(jù)庫(kù)系統(tǒng)開發(fā)的專業(yè)人士.

語言綁定

可以從C/C++程序中使用這個(gè)庫(kù),還可以獲得對(duì)TCL科技和一些其他腳本語言的綁定。

在CPAN的DBD::SQLite上有一個(gè)Perl的DBI/DBD模塊,它不是到SQLite的接口,而是包括整個(gè)SQLite數(shù)據(jù)庫(kù)引擎在其中并不需要任何額外的軟件。

還有一個(gè)Python模塊叫做PySQLite。

PHP從PHP5.0開始包含了SQLite,但是自5.1版之后開始成為一個(gè)延伸函式庫(kù)。SQLite能與php4一起工作但不包含在其中。

Rails2.0.3將缺省的數(shù)據(jù)庫(kù)配置改為了SQLite 3。

數(shù)據(jù)類型

SQLite的數(shù)據(jù)類型

首先你會(huì)接觸到一個(gè)讓你驚訝的名詞: Typelessness(無類型). 對(duì)! SQLite是無類型的. 這意味著你可以保存任何類型的數(shù)據(jù)到你所想要保存的任何表的任何列中, 無論這列聲明的數(shù)據(jù)類型是什么(只有在一種情況下不是, 稍后解釋). 對(duì)于SQLite來說對(duì)字段不指定類型是完全有效的. 如:

Create Table ex1(a, b, c);

誠(chéng)然SQLite允許忽略數(shù)據(jù)類型, 但是仍然建議在你的Create Table語句中指定數(shù)據(jù)類型. 因?yàn)閿?shù)據(jù)類型對(duì)于你和其他的程序員交流, 或者你準(zhǔn)備換掉你的數(shù)據(jù)庫(kù)引擎時(shí)能起到一個(gè)提示或幫助的作用. SQLite支持常見的數(shù)據(jù)類型, 如:

CREATE TABLE ex2

a VARCHAR(10),

b NVARCHAR(15),

c 文本,

d INTEGER,

e FLOAT,

f BOOLEAN,

g CLOB,

h BLOB,

i TIMESTAMP,

j NUMERIC(10,5)

k VARYING 字符 (24),

l NATIONAL VARYING CHARACTER(16)

前面提到在某種情況下, SQLite的字段并不是無類型的. 即在字段類型為”Integer Primary Key”時(shí).

客戶端管理

SQLite亦可以作為桌面數(shù)據(jù)庫(kù)使用,以下為第三方SQLite的GUI軟件。例如:

SQLiteMan,使用QT開發(fā)的一個(gè)SQLite客戶端,支持多語言、跨平臺(tái)。

SQLiteSpy 輕量級(jí)的SQLite客戶端,免費(fèi),單文件,界面設(shè)計(jì)緊湊,很穩(wěn)定, 功能相對(duì)較少,創(chuàng)建表與添加數(shù)據(jù)均需SQL,作為數(shù)據(jù)瀏覽和修改工具極佳。

SQLite Manager, 以火狐瀏覽器的擴(kuò)展形式提供的SQLite客戶端。

SQLite Database Browser, a graphical client to access SQLite databases

SqlPro SQL Client, another graphical client to work with SQLite databases。

使用技巧

PHP操作sqlite數(shù)據(jù)庫(kù)

a、如何連接sqlite數(shù)據(jù)庫(kù)?

if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {

select * from sqlite_master;

echo "數(shù)據(jù)庫(kù)連接成功!";

} else {

die($sqliteerror);

}

b、如何列出數(shù)據(jù)庫(kù)中所有的表?

if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {

$result = sqlite_array_query($db, 'select * from sqlite_master;');

foreach ($result as $entry) {

echo 'talbe 人名='.$entry['name']."

n";

echo 'SQL='.$entry['sql']."

n";

回聲 "

";

}

sqlite_close($db);

} else {

die($sqliteerror);

}}

c、對(duì)sqlite數(shù)據(jù)庫(kù)的查詢,以及結(jié)果集的顯示

if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {

$result = sqlite_array_query($db, 'select 人名, email from user ', SQLITE_ASSOC);

echo "user表查詢結(jié)果:

n";

echo " n name email

n";

foreach ($result as $entry) {

echo ' '.$entry['name']." " $entry['email']."

n";

}

回聲 ' ';

sqlite_close($db);

} else {

die($sqliteerror);

}

d、數(shù)據(jù)庫(kù)對(duì)象記錄的增加、刪除、修改

sqlite_query($db, "INSERT INTO user VALUES('user".$i."'" ",'user".$i."@ hichina. com')");

sqlite_query($db, "delete from user where user=’user99’");

sqlite_query($db, 'UPDATE user SET email="lilz@ hichina .com" where 人名="user1"');

用JAVA連接SQLite

先下載SQLite數(shù)據(jù)庫(kù)的Java數(shù)據(jù)庫(kù)連接

這里給出一個(gè)中文站點(diǎn)的URL:(參見擴(kuò)展閱讀)

將下載到的包解壓后得到j(luò)ar包 sqlitejdbc-v033-nested.jar 放到%JAVA_HOME%\天秤座 下,

并且將其添加到CLASSPATH系統(tǒng)環(huán)境變量中,我的classpath系統(tǒng)環(huán)境變量為:

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\sqlitejdbc-v033-nested.jar

在你的代碼中引用這個(gè)驅(qū)動(dòng):

Class.forName("org.sqlite.JDBC");

Connection conn = DriverManager.getConnection("Java數(shù)據(jù)庫(kù)連接:sqlite:filename");//filename為你的SQLite數(shù)據(jù)名稱

// ... use the database ...

康涅狄格學(xué)院close();

示例程序如下:

importjava.SQL*;

importorg.sqlite.JDBC;

/**

* 這是個(gè)非常簡(jiǎn)單的SQLite的Java程序,

* 程序中創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表、然后插入數(shù)據(jù),

* 最后讀出數(shù)據(jù)顯示出來

*/

publicclass TestSQLite

{

publicstaticvoid main(String[] args)

{

try

{

//連接SQLite的Java數(shù)據(jù)庫(kù)連接

Class.forName("org.sqlite.JDBC");

//建立一個(gè)數(shù)據(jù)庫(kù)名ziec三秒?yún)^(qū)db的連接,如果不存在就在當(dāng)前目錄下創(chuàng)建之

Connection conn =DriverManager.getConnection("jdbc:sqlite:zieckey.db");

Statement stat = conn.createStatement();

stat.executeUpdate("create table tbl1(人名 varchar(20), salary int);");//創(chuàng)建一個(gè)表,兩列

stat.executeUpdate("insert into tbl1values('ZhangSan',8000);");//插入數(shù)據(jù)

stat.executeUpdate("insert into tbl1values('LiSi',7800);");

stat.executeUpdate("insert into tbl1values('WangWu',5800);");

stat.executeUpdate("insert into tbl1values('ZhaoLiu',9100);");

ResultSet rs = stat.executeQuery("select * from tbl1;");//查詢數(shù)據(jù)

while(rs.next()){//將查詢到的數(shù)據(jù)打印出來

System.out.print("人名 = "+ rs.getString("name")+" ");//列屬性一

System.out.println("salary = "+ rs.getString("salary"));//列屬性二

}

rs.close();

conn.close();//結(jié)束數(shù)據(jù)庫(kù)的連接

}

catch(Exception e )

{

e.printStackTrace();

}

}

}

E:\coding\java\test>javac TestSQLite.java編譯運(yùn)行:

E:\Coding\java\test>java TestSQLite

人名 = ZhangSan salary = 8000

name = LiSi salary = 7800

name = WangWu salary = 5800

name = ZhaoLiu salary = 9100

總結(jié):本文介紹了嵌入式數(shù)據(jù)庫(kù)SQLite在Java中的應(yīng)用,

通過創(chuàng)建表、插入數(shù)據(jù)、查詢等操作介紹了在Java中對(duì)數(shù)據(jù)庫(kù)的操縱。

使用.NET操作SQLLITE

先下載ADO.NET2.0 Provider for SQLite。下載binaries zip版就可以了。下載完后解壓縮,可以在bin目錄下找到System.數(shù)據(jù)SQLite.DLL。在vs2008中用Add Reference(添加引用)功能把System.Data.SQLite.DLL加到工程里就可以了。運(yùn)行下面代碼試試:

string datasource = "e:/tmp/test.db";

System.Data.SQLite.SQLiteConnection.CreateFile(datasource);

//連接數(shù)據(jù)庫(kù)

System.數(shù)據(jù)SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();

System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();

connstr.DataSource = datasource;

connstr.Password = "admin";//設(shè)置密碼,SQLite ADO.NET實(shí)現(xiàn)了數(shù)據(jù)庫(kù)密碼保護(hù)

conn.ConnectionString = connstr.ToString();

conn.Open();

//創(chuàng)建表

System.數(shù)據(jù)SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();

string SQL = "CREATE TABLE test(username varchar(20),password varchar(20))";

cmd.CommandText = sql;

cmd.Connection = conn;

cmd.ExecuteNonQuery();

//插入數(shù)據(jù)

sql = "INSERT INTO test VALUES('a','b')";

cmd.CommandText = SQL;

cmd.ExecuteNonQuery();

//取出數(shù)據(jù)

sql = "SELECT * FROM test";

cmd.CommandText = sql;

System.數(shù)據(jù).SQLite.SQLiteDataReader reader = cmd.ExecuteReader();

StringBuilder sb = new StringBuilder();

while (reader.Read())

{

sbAppend("username:").Append(reader.GetString(0)).Append("\n")

.Append("password:").Append(reader.GetString(1));

}

MessageBox.Show(sb.ToString());

使用Linux下的C操作SQLLITE

由于linux下側(cè)重使用命令,沒有win的操作容易上手,所以在測(cè)試C操作SQLITE時(shí)會(huì)比較容易出現(xiàn)錯(cuò)誤,給大家做一個(gè)簡(jiǎn)單的程序進(jìn)行測(cè)試,演示怎么應(yīng)用。

#include

#include

int main( void )

{

sqlite3 *db=NULL;

char *zErrMsg = 0;

int rc;

//打開指定的數(shù)據(jù)庫(kù)文件,如果不存在將創(chuàng)建一個(gè)同名的數(shù)據(jù)庫(kù)文件

rc = sqlite3_open("zieckey.db", &db);

if( rc )

{

fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));

sqlite3_close(db);

exit(1);

}

else printf("You have opened a sqlite3 database named zieckey.db successfully!\nCongratulations! Have fun ! ^-^ \n");

sqlite3_close(db); //關(guān)閉數(shù)據(jù)庫(kù)

回車鍵 0;

}

退出,保存。(代碼輸入完成后,按下 Esc 鍵,然后輸入: :wq ,回車就好拉)

好拉,編譯:[root@localhost temp]# gcc opendbsqlite.c -o db.out

或者遇到這樣的問題:

[root@localhost temp]# gcc opendbsqlite.c -o db.out

opendbsqlite.c:11:21: sqlite3.h: 沒有那個(gè)文件或目錄

opendbsqlite.c: In 函數(shù) `main':

opendbsqlite.c:19: `sqlite3' undeclared (first use in this function)

opendbsqlite.c:19: (Each undeclared identifier is reported only once

opendbsqlite.c:19: for each function it appears in.)

opendbsqlite.c:19: `db' undeclared (first use in this 函數(shù))

這是由于沒有找到頭文件的原因。

也許會(huì)碰到類似這樣的問題:

[root@localhost temp]# gcc opendbsqlite.c -o db.out

/tmp/ccTkItnN.o(.文本+0x2b): In function `main':

: undefined reference to `sqlite3_open'

/tmp/ccTkItnN.o(.text+0x45): In 函數(shù) `main':

: undefined reference to `sqlite3_errmsg'

/tmp/ccTkItnN.o(.text+0x67): In function `main':

: undefined reference to `sqlite3_close'

/tmp/ccTkItnN.o(.文本+0x8f): In function `main':

: undefined reference to `sqlite3_close'

collect2: ld returned 1 exit status

這是個(gè)沒有找到庫(kù)文件的問題。

[root@localhost temp]# gcc opendbsqlite.c -o db.out -lsqlite3 -L/usr/local/sqlite3/lib -I/usr/local/sqlite3/include

這樣編譯應(yīng)該就可以了

如果還是有錯(cuò)誤的話請(qǐng)搜索:(一)Sqlite數(shù)據(jù)庫(kù)連接。有更詳細(xì)的說明解釋

常用函數(shù)

SQLite 有許多內(nèi)置函數(shù)用于處理字符串或數(shù)字?jǐn)?shù)據(jù)。下面列出了一些有用的 SQLite 內(nèi)置函數(shù),且所有函數(shù)都是大小寫不敏感,這意味著您可以使用這些函數(shù)的小寫形式或大寫形式或混合形式。欲了解更多詳情,請(qǐng)查看 SQLite 的官方文檔:

序號(hào) 函數(shù) & 描述

1 SQLite COUNT 函數(shù) SQLite COUNT 聚集函數(shù)是用來計(jì)算一個(gè)數(shù)據(jù)庫(kù)表中的行數(shù)。

2 SQLite MAX 函數(shù) SQLite MAX 聚合函數(shù)允許我們選擇某列的最大值。

3 SQLite MIN 函數(shù) SQLite MIN 聚合函數(shù)允許我們選擇某列的最小值。

4 SQLite AVG 函數(shù) SQLite AVG 聚合函數(shù)計(jì)算某列的平均值。

5 SQLite SUM 函數(shù) SQLite SUM 聚合函數(shù)允許為一個(gè)數(shù)值列計(jì)算總和。

6 SQLite RANDOM 函數(shù) SQLite RANDOM 函數(shù)返回一個(gè)介于 -9223372036854775808 和 +9223372036854775807 之間的偽隨機(jī)整數(shù)。

7 SQLite ABS 函數(shù) SQLite ABS 函數(shù)返回?cái)?shù)值參數(shù)的絕對(duì)值

8 SQLite UPPER 函數(shù) SQLite UPPER 函數(shù)把字符串轉(zhuǎn)換為大寫字母

9 SQLite LOWER 函數(shù) SQLite LOWER 函數(shù)把字符串轉(zhuǎn)換為小寫字母。

10 SQLite LENGTH 函數(shù) SQLite LENGTH 函數(shù)返回字符串的長(zhǎng)度。

11 SQLite sqlite_version 函數(shù) SQLite sqlite_version 函數(shù)返回 SQLite 庫(kù)的版本。

歷史版本

從某種程度上說,SQLite最初的構(gòu)思是在一條軍艦上進(jìn)行的。當(dāng)時(shí)在通用動(dòng)力工作的SQLite的作者??D. Richard Hipp正在為美國(guó)海軍編制一種使用在導(dǎo)彈驅(qū)逐艦上的程序。那個(gè)程序最初運(yùn)行在Hewlett-Packard UNIX(HPUX)上,后臺(tái)使用INFORMIX數(shù)據(jù)庫(kù)。對(duì)那個(gè)具體應(yīng)用而言,Informix有點(diǎn)兒太強(qiáng)大了。一個(gè)有經(jīng)驗(yàn)的數(shù)據(jù)庫(kù)管理員(DBA)安裝或升級(jí)Informix可能需要一整天,如果是沒經(jīng)驗(yàn)的程序員,這個(gè)工作可能永遠(yuǎn)也做不完。真正需要的只是一個(gè)自我包含的數(shù)據(jù)庫(kù),它易使用并能由程序控制傳導(dǎo),另外,不管其他軟件是否安裝,它都可以運(yùn)行。

2000年1月,Hipp開始和一個(gè)同事討論關(guān)于創(chuàng)建一個(gè)簡(jiǎn)單的嵌入式SQL數(shù)據(jù)庫(kù)的想法,這個(gè)數(shù)據(jù)庫(kù)將使用GNU DBM哈希庫(kù)(gdbm)做后臺(tái),同時(shí)這個(gè)數(shù)據(jù)庫(kù)將不需要安裝和管理支持。后來,一有空閑時(shí)間,Hipp就開始實(shí)施這項(xiàng)工作,2000年8月,SQLite 1.0版發(fā)布了。

按照原定計(jì)劃,SQLite 1.0用gdbm作為存儲(chǔ)管理器。然而,Hipp不久就用自己實(shí)現(xiàn)的能支持事務(wù)和記錄按主鍵存儲(chǔ)的B-tree替換了gdbm。隨著第一次重要升級(jí)的進(jìn)行,SQLite有了穩(wěn)定的發(fā)展,功能和用戶也在增長(zhǎng)。2001年中期,很多項(xiàng)目--開源的或商業(yè)的--都開始使用SQLite。在隨后的幾年中,開源社區(qū)的其他成員開始為他們喜歡的腳本語言和程序庫(kù)編寫SQLite擴(kuò)展。一個(gè)接著一個(gè),既PerlPythonRuby、Java和其他主流的程序設(shè)計(jì)語言的擴(kuò)展之后,新的擴(kuò)展如SQLite的ODBC接口出現(xiàn)并證明了SQLite的廣泛應(yīng)用和實(shí)用功能。

2004年,SQLite從版本2升級(jí)到版本3,這是一次重大升級(jí)。

以下是之后的版本更新歷史,可以在官網(wǎng)查詢到。

2004-06-09 - Version 2.8.14

2004-06-18 - Version 3.0.0

2007-09-04 - Version 3.5.0

2008-07-16 - Version 3.6.0

2008-11-19 - Version 3.6.6

2009-11-04 - Version 3.6.20

2010-03-09 - Version 3.6.23

2010-07-22 - Version 3.7.0

2010-08-24 - Version 3.7.2

2011-02-01 - Version 3.7.5

2012-06-11 - Release 3.7.13

2012-09-03 - Release 3.7.14

2012-12-12 - Release 3.7.15

2013-03-18 - Release 3.7.16

2013-05-20 - Release 3.7.17

2013-08-26 - Release 3.8.0

2013-10-17 - Release 3.8.1

2013-12-06 - Release 3.8.2

2014-02-03 - Release 3.8.3

2014-03-10 - Release 3.8.4

2014-06-04 - release 3.8.5

2014-08-15 - Release 3.8.6

2014-10-08 - Release 3.8.7

2015-01-16 - Release 3.8.8

注意事項(xiàng)

在確定是否在應(yīng)用程序中使用?SQLite?之前,應(yīng)該考慮以下幾種情況:

目前沒有可用于?SQLite?的網(wǎng)絡(luò)服務(wù)器。從應(yīng)用程序運(yùn)行位于其他計(jì)算機(jī)上的?SQLite?的惟一方法是從網(wǎng)絡(luò)共享運(yùn)行。這樣會(huì)導(dǎo)致一些問題,像?UNIX??和?Windows??網(wǎng)絡(luò)共享都存在文件鎖定問題。還有由于與訪問網(wǎng)絡(luò)共享相關(guān)的延遲而帶來的性能下降問題。

SQLite?只提供數(shù)據(jù)庫(kù)級(jí)的鎖定。雖然有一些增加并發(fā)的技巧,但是,如果應(yīng)用程序需要的是表級(jí)別或行級(jí)別的鎖定,那么?DBMS?能夠更好地滿足您的需求。

正如前面提到的,SQLite?可以支持每天大約?100,00?次點(diǎn)擊率的?Web?站點(diǎn)?——?并且,在某些情況下,可以處理?10?倍于此的通信量。對(duì)于具有高通信量或需要支持龐大瀏覽人數(shù)的?Web?站點(diǎn)來說,應(yīng)該考慮使用?DBMS。

SQLite?沒有用戶帳戶概念,而是根據(jù)文件系統(tǒng)確定所有數(shù)據(jù)庫(kù)的權(quán)限。這會(huì)使中華人民共和國(guó)強(qiáng)制執(zhí)行法存儲(chǔ)配額發(fā)生困難,強(qiáng)制執(zhí)行用戶許可變得不可能。

SQLite?支持多數(shù)(但不是全部)的?SQL92?標(biāo)準(zhǔn)。不受支持的一些功能包括完全觸發(fā)器支持和可寫視圖

如果您感到其中的任何限制會(huì)影響您的應(yīng)用程序,那么您應(yīng)該考慮使用完善的?DBMS。如果您可以解除這些限制問題,并且對(duì)快速靈活的嵌入式開源數(shù)據(jù)庫(kù)引擎很感興趣,則應(yīng)重點(diǎn)考慮使用?SQLite。

一些能夠真正表現(xiàn)?SQLite?優(yōu)越性能的領(lǐng)域是?Web?站點(diǎn),可以使用?SQLite?管理應(yīng)用程序數(shù)據(jù)、快速應(yīng)用程序原型制造和培訓(xùn)工具。

由于資源占用少、性能良好和零管理成本,嵌入式數(shù)據(jù)庫(kù)有了它的用武之地,它將為那些以前無法提供用作持久數(shù)據(jù)的后端的數(shù)據(jù)庫(kù)的應(yīng)用程序提供了高效的性能。現(xiàn)在,沒有必要使用文本文件來實(shí)現(xiàn)持久存儲(chǔ)。SQLite?之類的嵌入式數(shù)據(jù)庫(kù)的易于使用性可以加快應(yīng)用程序的開發(fā),并使得小型應(yīng)用程序能夠完全支持復(fù)雜的?SQL。這一點(diǎn)對(duì)于對(duì)于小型設(shè)備空間的應(yīng)用程序來說尤其重要。

嵌入式數(shù)據(jù)庫(kù)對(duì)于加快應(yīng)用程序開發(fā)也很重要,尤其是在用于數(shù)據(jù)庫(kù)抽象層(例如PEAR::DB或ezSQL)時(shí)。最后,SQLite?正在積極開發(fā)中,未來一定會(huì)有新的功能,會(huì)對(duì)開源社區(qū)更有用。

參考資料 >

About SQLite.sqlite.org.2024-01-31

SQLite 簡(jiǎn)介.菜鳥教程.2024-01-31

生活家百科家居網(wǎng)