2,507
社区成员




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亦可以作为桌面数据库使用,以下为第三方SQLite的GUI软件 [1]。例如:
SQLiteMan,使用QT开发的一个SQLite客户端,支持多语言、跨平台。
SQLiteSpy 轻量级的SQLite客户端,免费,单文件,界面设计紧凑,很稳定, 功能相对较少,创建表与添加数据均需sql语句,作为数据浏览和修改工具极佳。
SQLite Manager, 以火狐浏览器的扩展形式提供的SQLite客户端 [1]。
SQLite Database Browser, a graphical client to access SQLite databases [1]
SqlPro SQL Client, another graphical client to work with SQLite databases。
播报
编辑
用PHP操作sqlite数据库
a、 如何连接sqlite数据库?
1if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) { 2 select * from sqlite_master;echo "数据库连接成功!"; 3} else { 4 die($sqliteerror); 5}
b、 如何列出数据库中所有的表?
1if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) { 2 $result = sqlite_array_query($db, 'select * from sqlite_master;'); 3 foreach ($result as $entry) { 4 echo 'talbe name='.$entry['name']."n"; 5 echo 'sql='.$entry['sql']."n"; 6 echo "--------------------------------------------------------------------------------"; 7 } 8 sqlite_close($db); 9} else { 10 die($sqliteerror); 11}
c、 对sqlite数据库的查询,以及结果集的显示
1if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) { 2 $result = sqlite_array_query($db, 'select name, email from user ', SQLITE_ASSOC); 3 echo "user表查询结果:n";echo " n name emailn"; 4 foreach ($result as $entry) { 5 echo ' '.$entry['name']." " $entry['email']."n"; 6 } 7 echo ' ';sqlite_close($db); 8} else { 9 die($sqliteerror); 10}
d、数据库对象记录的增加、删除、修改
1sqlite_query($db, "INSERT INTO user VALUES('user".$i."'" ",'user".$i."@ hichina. com')"); 2sqlite_query($db, "delete from user where user=’user99’"); 3sqlite_query($db, 'UPDATE user SET email="lilz@ hichina .com" where name="user1"');
用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
在你的代码中引用这个驱动:
1Class.forName("org.sqlite.JDBC"); 2Connection conn = DriverManager.getConnection("jdbc:sqlite:filename");//filename为你的SQLite数据名称 3// ... use the database ... 4conn.close();
示例程序如下:
1import java.sql.*; 2import org.sqlite.JDBC; 3 4/** 这是个非常简单的SQLite的Java程序, 5 * 程序中创建数据库、创建表、然后插入数据, 6 * 最后读出数据显示出来*/ 7public class TestSQLite{ 8 public static void main(String[] args){ 9 try{ 10 //连接SQLite的JDBC 11 Class.forName("org.sqlite.JDBC"); 12 //建立一个数据库名zieckey.db的连接,如果不存在就在当前目录下创建之 13 Connection conn =DriverManager.getConnection("jdbc:sqlite:zieckey.db"); 14 Statement stat = conn.createStatement(); 15 stat.executeUpdate("create table tbl1(name varchar(20), salary int);");//创建一个表,两列 16 stat.executeUpdate("insert into tbl1values('ZhangSan',8000);");//插入数据 17 stat.executeUpdate("insert into tbl1values('LiSi',7800);"); 18 stat.executeUpdate("insert into tbl1values('WangWu',5800);"); 19 stat.executeUpdate("insert into tbl1values('ZhaoLiu',9100);"); 20 ResultSet rs = stat.executeQuery("select * from tbl1;");//查询数据 21 while(rs.next()){//将查询到的数据打印出来 22 System.out.print("name = "+ rs.getString("name")+" ");//列属性一 23 System.out.println("salary = "+ rs.getString("salary"));//列属性二 24 } 25 rs.close(); 26 conn.close();//结束数据库的连接 27 }catch(Exception e ){ 28 e.printStackTrace(); 29 } 30 } 31}
1E:\Coding\java\test>javac TestSQLite.java 2# 编译运行: 3E:\Coding\java\test>java TestSQLite 4name = ZhangSan salary = 8000 5name = LiSi salary = 7800 6name = WangWu salary = 5800 7name = ZhaoLiu salary = 9100
总结:本文介绍了嵌入式数据库SQLite在Java中的应用,
通过创建表、插入数据、查询等操作介绍了在Java中对数据库的操纵。 [2]
使用.NET操作SQLLITE
先下载ADO.NET2.0 Provider for SQLite。下载binaries zip版就可以了。下载完后解压缩,可以在bin目录下找到System.Data.SQLite.DLL。在vs2008中用Add Reference(添加引用)功能把System.Data.SQLite.DLL加到工程里就可以了。运行下面代码 [3]试试:
1string datasource = "e:/tmp/test.db"; 2System.Data.SQLite.SQLiteConnection.CreateFile(datasource); 3//连接数据库 4System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection(); 5System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder(); 6connstr.DataSource = datasource;connstr.Password = "admin";//设置密码,SQLite ADO.NET实现了数据库密码保护 7conn.ConnectionString = connstr.ToString();conn.Open(); 8//创建表 9System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand(); 10string sql = "CREATE TABLE test(username varchar(20),password varchar(20))"; 11cmd.CommandText = sql; 12cmd.Connection = conn;cmd.ExecuteNonQuery(); 13//插入数据 14sql = "INSERT INTO test VALUES('a','b')"; 15cmd.CommandText = sql;cmd.ExecuteNonQuery(); 16//取出数据 17sql = "SELECT * FROM test"; 18cmd.CommandText = sql; 19System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader(); 20StringBuilder sb = new StringBuilder(); 21while (reader.Read()){ 22 sb.Append("username:").Append(reader.GetString(0)).Append("\n").Append("password:").Append(reader.GetString(1)); 23} 24MessageBox.Show(sb.ToString());
使用linux下的C操作SQLLITE
由于linux下侧重使用命令,没有win的操作容易上手,所以在测试C操作SQLITE时会比较容易出现错误,给大家做一个简单的程序进行测试,演示怎么应用。
1#include <stdio.h> 2#include "sqlite3.h" 3int main( void ){ 4 sqlite3 *db = NULL; 5 char *zErrMsg = 0; 6 int rc; 7 //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件 8 rc = sqlite3_open("zieckey.db", &db); 9 if( rc ){ 10 fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); 11 sqlite3_close(db); 12 exit(1); 13 }else 14 printf("You have opened a sqlite3 database" 15 " named zieckey.db successfully!\n" 16 "Congratulations! Have fun ! ^-^ \n"); 17 sqlite3_close(db); //关闭数据库 18 return 0; 19}
退出,保存。(代码输入完成后,按下 Esc 键,然后输入: :wq ,回车就好