天天看點

SQLite(android上面的資料庫系統)

SQLite,是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統,它的設計目标是嵌入式的,而且目前已經在很多嵌入式産品中使用了它,它占用資源非常的低,在嵌入式裝置中,可能隻需要幾百K的記憶體就夠了。它能夠支援Windows/Linux/Unix等等主流的作業系統,同時能夠跟很多程式語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的資料庫管理系統來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生于2000年5月. 至今已經有10個年頭,SQLite也迎來了一個版本 SQLite 3已經釋出。

目錄

SQLite功能
SQLite特性
SQLite類型
如何連接配接SQLite?
  1. 1.用PHP操作sqlite資料庫
  2. 2.用JAVA連接配接SQLite
SQLite的管理
SQLite功能
SQLite特性
SQLite類型
如何連接配接SQLite?
  1. 1.用PHP操作sqlite資料庫
  2. 2.用JAVA連接配接SQLite
SQLite的管理
展開

編輯本段SQLite功能

  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.7.7.1 。它的官方網站是:http://www.sqlite. org或者http://www.sqlite .com .cn,能在上面獲得源代碼和文檔。同時因為資料庫結構簡單,系統源代碼也不是很多,也适合想研究資料庫系統開發的專業人士

編輯本段SQLite特性

  下面是通路SQLite官方網站: http://www.sqlite. org/ 時第一眼看到關于SQLite的特性.

  1. ACID事務

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

  3. 儲存在單一磁盤檔案中的一個完整的資料庫

  4. 資料庫檔案可以在不同位元組順序的機器間自由的共享

  5. 支援資料庫大小至2TB

  6. 足夠小, 大緻3萬行C代碼, 250K

  7. 比一些流行的資料庫在大部分普通資料庫操作要快

  8. 簡單, 輕松的API

  9. 包含TCL綁定, 同時通過Wrapper支援其他語言的綁定

  10. 良好注釋的源代碼, 并且有着90%以上的測試覆寫率

  11. 獨立: 沒有額外依賴

  12. Source完全的Open, 你可以用于任何用途, 包括出售它

  13. 支援多種開發語言,C, PHP, Perl, Java, ASP .NET,Python

編輯本段SQLite類型

  SQLite的資料類型

  首先你會接觸到一個讓你驚訝的名詞: Typelessness(無類型). 對! SQLite是無類型的. 這意味着你可以儲存任何類型的資料到你所想要儲存的任何表的任何列中, 無論這列聲明的資料類型是什麼(隻有在一種情況下不是, 稍後解釋). 對于SQLite來說對字段不指定類型是完全有效的. 如:

  Create Table ex1(a, b, c);

  誠然SQLite允許忽略資料類型, 但是仍然建議在你的Create Table語句中指定資料類型. 因為資料類型對于你和其他的程式員交流, 或者你準備換掉你的資料庫引擎. SQLite支援常見的資料類型, 如:

  CREATE TABLE ex2(

  a VARCHAR(10),

  b NVARCHAR(15),

  c TEXT,

  d INTEGER,

  e FLOAT,

  f BOOLEAN,

  g CLOB,

  h BLOB,

  i TIMESTAMP,

  j NUMERIC(10,5)

  k VARYING CHARACTER (24),

  l NATIONAL VARYING CHARACTER(16)

  );

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

編輯本段如何連接配接SQLite?

1.用PHP操作sqlite資料庫

  a、 如何連接配接sqlite資料庫?

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

  select * from sqlite_master;

  echo "資料庫連接配接成功!n

  ";

  } else {

  die($sqliteerror);

  }

  b、 如何列出資料庫中所有的表?

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

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

  foreach ($result as $entry) {

  echo \'talbe name=\'.$entry[\'name\']."

  n";

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

  n";

  echo "

  --------------------------------------------------------------------------------

  ";

  }

  sqlite_close($db);

  } else {

  die($sqliteerror);

  }}

  c、 對sqlite資料庫的查詢,以及結果集的顯示

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

  $result = sqlite_array_query($db, \'select name, email from user \', SQLITE_ASSOC);

  echo "user表查詢結果:

  n";

  echo " n name email

  n";

  foreach ($result as $entry) {

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

  n";

  }

  echo \' \';

  sqlite_close($db);

  } else {

  die($sqliteerror);

  }

  d、 資料庫對象記錄的增加、删除、修改

  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 name="user1"\');

2.用JAVA連接配接SQLite

  先下載下傳SQLite資料庫的JDBC

  這裡給出一個中文站點的URL:(參見擴充閱讀)

  将下載下傳到的包解壓後得到jar包 sqlitejdbc-v033-nested.jar 放到%JAVA_HOME%\lib 下,

  并且将其添加到classpath系統環境變量中,我的classpath系統環境變量現在為:

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

  在你的代碼中引用這個驅動:

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

  Connection conn = DriverManager.getConnection("jdbc:sqlite:filename");//filename為你的SQLite資料名稱

  // ... use the database ...

  conn.close();

  示例程式如下:

  

importjava.sql.*;

importorg.sqlite.JDBC;

/**

* 這是個非常簡單的SQLite的Java程式,

* 程式中建立資料庫、建立表、然後插入資料,

* 最後讀出資料顯示出來

*/

publicclass TestSQLite

{

publicstaticvoid main(String[] args)

{

try

{

//連接配接SQLite的JDBC

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

//建立一個資料庫名zieckey.db的連接配接,如果不存在就在目前目錄下建立之

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

Statement stat = conn.createStatement();

stat.executeUpdate("create table tbl1(name varchar(20), salary int);");//建立一個表,兩列

stat.executeUpdate("insert into tbl1 values(\'ZhangSan\',8000);");//插入資料

stat.executeUpdate("insert into tbl1 values(\'LiSi\',7800);");

stat.executeUpdate("insert into tbl1 values(\'WangWu\',5800);");

stat.executeUpdate("insert into tbl1 values(\'ZhaoLiu\',9100);");

ResultSet rs = stat.executeQuery("select * from tbl1;");//查詢資料

while(rs.next()){//将查詢到的資料列印出來

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

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

}

rs.close();

conn.close();//結束資料庫的連接配接

}

catch(Exception e )

{

e.printStackTrace();

}

}

}

編譯運作:

  E:\Coding\java\test>javac TestSQLite.java

  E:\Coding\java\test>java TestSQLite

  name = ZhangSan salary = 8000

  name = LiSi salary = 7800

  name = WangWu salary = 5800

  name = ZhaoLiu salary = 9100

  總結:本文介紹了嵌入式資料庫SQLite在Java中的應用,

  通過建立表、插入資料、查詢等操作介紹了在Java中對資料庫的操縱。

編輯本段SQLite的管理

  管理工具也有不少,建議您使用sqlitemanager,用法酷像phpmyadmin.

擴充閱讀:
  • 1

    Sqlite中文社群:http://www.sqlite.com.cn/

  • 2

    下載下傳SQLite資料庫的JDBC:http://www.sqlite.com.cn/Upfiles/source/sqlitejdbc-v033-nested.tgz

SQLite(android上面的資料庫系統)