监理公司管理系统 | 工程企业管理系统 | OA系统 | ERP系统 | 造价咨询管理系统 | 工程设计管理系统 | 甲方项目管理系统 | 签约案例 | 客户案例 | 在线试用
X 关闭
鹰潭网站建设公司

当前位置:工程项目OA系统 > 泛普各地 > 江西OA系统 > 鹰潭OA > 鹰潭网站建设公司

轻型数据库SQLite结合PHP的开发

申请免费试用、咨询电话:400-8352-114

 鹰潭网站建设 www.diyphp.net

SQLite是一款轻型的数据库,它的描绘方针是嵌入式的,而且当时曾经在许多嵌入式产物中运用了它,它占用资源十分的低,在嵌入式设备中,可以只需求几百K的内存就够了。它可以撑持Windows/Linux/Unix等等干流的操作体系,还可以跟许多顺序言语相连系,比方Tcl、PHP、Java等,还有ODBC接口,相同比起Mysql、PostgreSQL这两款开源国际闻名的数据库办理体系来讲,它的处置速度比他们都快。

SQLite固然很细巧,可是撑持的SQL句子不会差劲于其他开源数据库,它撑持的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,有时分真的觉得有点象,可是事实上它们差异很大。比方SQLite撑持跨平台,操作简略,可以运用许多言语直接创立数据库,而不象Access相同需求Office的撑持。若是你是个很小型的运用,或许你想做嵌入式开发,没有适宜的数据库体系,那么如今你可以思索运用SQLite。当时它的最新版别是 3.2.2,它的官方网站是:http://www.sqlite.org,能在上面取得源代码和文档。还由于数据库布局简略,体系源代码也不是许多,也合适想研讨数据库体系开发的专业人士。

如今咱们开端简略的引见,首要我是想讲清晰几个问题,一是如何装置运用,二是如何跟PHP连系开发。

一、装置

1. Windows平台

下载windows下的文件,其实就是一个指令行顺序,(下载地址:http://www.sqlite.org/sqlite-3_2_2.zip),这个指令行顺序用来包罗生成数据库文件、履行SQL查询、备份数据库等等功用。
下载后比方咱们解压缩到 D:Downloadssqlitesqlite-3_2_2 这个目录下,那么咱们进入cmd,而且进入该目录:
cd D:Downloadssqlitesqlite-3_2_2
D:Downloadssqlitesqlite-3_2_2>sqlite3 test.db
# 若是test.db不存在,那么就发生一个数据库文件,若是存在就直接运用该数据库文件,相当于mysql中的use
SQLite version 3.2.2
Enter ".help" for instructions
sqlite>
# SQLite的提示符,若是想检查指令协助输入 .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


 

 

横竖运用规范的SQL来操作就没有问题,不清晰可以去官方网站上检查协助信息。别的还要阐明的是SQLite不撑持修正表布局,若是要修正表布局,只要删去表从头再树立,所以树立表的时分一定要思索扩大性。估量今后这方面的功用会加强。


2. Linux/Unix 平台

error: 当时还没装过,呵呵,不过估量跟Windows差不多,改天把这部分内容补上。


二、PHP对SQLite的开发

PHP 5开端不再默许撑持Mysql,而是默许撑持SQLite,可见它的影响力多么大,所以若是你想做SQLite的PHP开发,主张你运用PHP 5.0.0以上版别,我当时运用的是 PHP 5.0.4版别,直接撑持SQLite扩大,这里我就不细心讲如何装置PHP扩大,若是不清晰可以检查PHP关联文档。
这里我首要是讲对准SQLite的开发。当时PHP的干流DB类都撑持SQLite的驱动,包罗PEAR::DB类、ADOdb类都撑持,所以运用DB来来做开发也是个好的挑选。

(以下操作为了简洁,都是再Windows xp平台进行的)

1. 运用PHP操作曾经树立好的sqlite数据库

若是你有一个曾经经过sqlite.exe树立好了的数据库和表布局,那么你就可以直接对它进行操作。php中对准sqlite的处置函数比拟多,你可以检查PHP手册取得详细信息。

咱们运用sqlite_open()函数来翻开一个sqlite数据库,它成功回来一个操作资源,失利回来false,那么今后的一切操作都是在这个资源上进行的,履行一个sql查询运用sqlite_query函数。

下面我假定你在当时PHP顺序目录下有一个abc.db的sqlite数据库文件,咱们对该文件进行操作:


//翻开sqlite数据库
$db = @sqlite_open("abc.db");
//反常处置
if (!$db) die("Connection Sqlite failed.n");
//增加一个叫做foo的数据库
@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
)

证明咱们代码履行成功,没有输入请检查顺序,或许你的数据库文件能否存在。

那么有了这个根本操作,你就可以思索运用更杂乱的操作和SQL来操作它,让它帮你办理信息,你可以做一个留言本,或许做一个CMS体系,我想都是没有问题的。


2. 运用PHP树立数据库而且操作

若是你没有任何sqlite.exe之类的东西,那么你也可以经过php来创立一个sqlite数据库,而且对它进行办理。
其实经过sqlite.exe顺序树立的数据库,内容是空的,其实只要后来等创立表,增加数据今后,数据库文件才有,那么咱们是不是可以手艺增加一个文件,比方一个空的 test.db 文件,而且对它进行操作。这是完全可以,下面咱们就运用PHP顺序来完结创立一个数据库,而且履行简略的树立数据表,刺进数据和检索数据的功用。

首要咱们来看代码:(代码比拟长,但比拟简略了解)

/**
 * 文件:sqlite.php
 * 功用:对sqlite数据库的处置
 * 作者:heiyeluren
 * 工夫:2005-8-5
 */
define("LN", __LINE__);//行号
define("FL", __FILE__);//当时文件
define("DEBUG", 0);//调试开关

$db_name = "heiyeluren.db";
//创立数据库文件,文件内容为空
if (!file_exists($db_name)) {
 if (!($fp = fopen($db_name, "w+"))) {
  exit(error_code(-1, LN));
 }
 fclose($fp);
}
//翻开数据库文件
if (!($db = sqlite_open($db_name))) {
 exit(error_code(-2, LN));
}
//发生数据表布局
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));
}
//刺进一条数据
if (!sqlite_query($db, " INSERT INTO test (name) VALUES ('heiyeluren') ")) {
 exit(error_code(-4, LN));
}
//把数据检索出来
if (!($result = sqlite_query($db, "SELECT * FROM test"))) {
 exit(error_code(-5, LN));
}

//获取检索数据并显现
while ($array = sqlite_fetch_array($result)) {
 echo "ID: ". $array[id] ."
Name: ". $array[name] ;
}

/* 过错信息代码函数 */
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


咱们以上的顺序包罗了比拟完好的功用,有调试、反常处置、存取数据库等功用,算是一个简略运用。若是你有爱好也可以进行扩大。


* 完毕:

咱们根本的操作就讲到这里,今后有空我会把内容补全。若是我们有爱好可以去研讨一下,或许你的个人主页就需求这样的小型数据库来协助你。

 

 

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>
# 咱们创立一个数据库catlog
sqlite> create table catalog(
   ...> id integer primarykey,
   ...> pid integer,
   ...> name varchar(10) UNIQUE
   ...> );
sqlite>
# 若是表存在就会提示:
SQL error: table catalog already exists
# 咱们创立索引信息
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);
# 给数据表刺进一条记载
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

 

发布:2007-03-31 14:59    编辑:泛普软件 · xiaona    [打印此页]    [关闭]
鹰潭OA
联系方式

成都公司:成都市成华区建设南路160号1层9号

重庆公司:重庆市江北区红旗河沟华创商务大厦18楼

咨询:400-8352-114

加微信,免费获取试用系统

QQ在线咨询

泛普鹰潭网站建设公司其他应用

鹰潭软件开发公司 鹰潭门禁系统 鹰潭物业管理软件 鹰潭仓库管理软件 鹰潭餐饮管理软件 鹰潭网站建设公司