用PHP操作sqlite数据库
a、 如何连接sqlite数据库?
if ($db = sqlite_open(‘mysqlitedb‘, 0666, $sqliteerror)) {
select * from sqlite_master;
echo "数据库连接成功!";
} 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);
}
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"‘);
用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 tbl1values(‘ZhangSan‘,8000);");//插入数据
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;");//查询数据
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中对数据库的操纵。
[2]
使用.NET操作SQLLITE
先下载ADO.NET2.0 Provider for SQLite。下载binaries zip版就可以了。下载完后解压缩,可以在bin目录下找到System.Data.SQLite.DLL。在vs2008中用Add Reference(添加引用)功能把System.Data.SQLite.DLL加到工程里就可以了。运行下面代码试试:
string datasource = "e:/tmp/test.db";
System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
//连接数据库
System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();
System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();
connstr.DataSource = datasource;
connstr.Password = "admin";//设置密码,SQLite ADO.NET实现了数据库密码保护
conn.ConnectionString = connstr.ToString();
conn.Open();
//创建表
System.Data.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();
//插入数据
sql = "INSERT INTO test VALUES(‘a‘,‘b‘)";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
//取出数据
sql = "SELECT * FROM test";
cmd.CommandText = sql;
System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader();
StringBuilder sb = new StringBuilder();
while (reader.Read())
{
sb.Append("username:").Append(reader.GetString(0)).Append("\n")
.Append("password:").Append(reader.GetString(1));
}
MessageBox.Show(sb.ToString());
使用linux下的C操作SQLLITE
由于linux下侧重使用命令,没有win的操作容易上手,所以在测试C操作SQLITE时会比较容易出现错误,给大家做一个简单的程序进行测试,演示怎么应用。
#include <stdio.h>
#include <sqlite3.h>
int main( void )
{
sqlite3 *db=NULL;
char *zErrMsg = 0;
int rc;
//打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
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); //关闭数据库
return 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: 没有那个文件或目录
opendbsqlite.c: In function `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 function)
这是由于没有找到头文件的原因。
也许会碰到类似这样的问题:
[root@localhost temp]# gcc opendbsqlite.c -o db.out
/tmp/ccTkItnN.o(.text+0x2b): In function `main‘:
: undefined reference to `sqlite3_open‘
/tmp/ccTkItnN.o(.text+0x45): In function `main‘:
: undefined reference to `sqlite3_errmsg‘
/tmp/ccTkItnN.o(.text+0x67): In function `main‘:
: undefined reference to `sqlite3_close‘
/tmp/ccTkItnN.o(.text+0x8f): In function `main‘:
: undefined reference to `sqlite3_close‘
collect2: ld returned 1 exit status
这是个没有找到库文件的问题。
[root@localhost temp]# gcc opendbsqlite.c -o db.out -lsqlite3 -L/usr/local/sqlite3/lib -I/usr/local/sqlite3/include
这样编译应该就可以了
如果还是有错误的话请搜索:(一)Sqlite数据库连接。有更详细的说明解释
常用函数:
SQLite 有许多内置函数用于处理字符串或数字数据。下面列出了一些有用的 SQLite 内置函数,且所有函数都是大小写不敏感,这意味着您可以使用这些函数的小写形式或大写形式或混合形式。欲了解更多详情,请查看 SQLite 的官方文档:
序号 函数 & 描述
1 SQLite COUNT 函数 SQLite COUNT 聚集函数是用来计算一个数据库表中的行数。
2 SQLite MAX 函数 SQLite MAX 聚合函数允许我们选择某列的最大值。
3 SQLite MIN 函数 SQLite MIN 聚合函数允许我们选择某列的最小值。
4 SQLite AVG 函数 SQLite AVG 聚合函数计算某列的平均值。
5 SQLite SUM 函数 SQLite SUM 聚合函数允许为一个数值列计算总和。
6 SQLite RANDOM 函数 SQLite RANDOM 函数返回一个介于 -9223372036854775808 和 +9223372036854775807 之间的伪随机整数。
7 SQLite ABS 函数 SQLite ABS 函数返回数值参数的绝对值。
8 SQLite UPPER 函数 SQLite UPPER 函数把字符串转换为大写字母。
9 SQLite LOWER 函数 SQLite LOWER 函数把字符串转换为小写字母。
10 SQLite LENGTH 函数 SQLite LENGTH 函数返回字符串的长度。
11 SQLite sqlite_version 函数 SQLite sqlite_version 函数返回 SQLite 库的版本。
注意事项:
在确定是否在应用程序中使用 SQLite 之前,应该考虑以下几种情况:
-
有没有可用于 SQLite 的网络服务器。从应用程序运行位于其他计算机上的 SQLite 的惟一方法是从网络共享运行。这样会导致一些问题,像 UNIX? 和 Windows? 网络共享都存在文件锁定问题。还有由于与访问网络共享相关的延迟而带来的性能下降问题。
-
SQLite 只提供数据库级的锁定。虽然有一些增加并发的技巧,但是,如果应用程序需要的是表级别或行级别的锁定,那么 DBMS 能够更好地满足您的需求。
-
正如前面提到的,SQLite 可以支持每天大约 100,00 次点击率的 Web 站点 —— 并且,在某些情况下,可以处理 10 倍于此的通信量。对于具有高通信量或需要支持庞大浏览人数的 Web 站点来说,应该考虑使用 DBMS。
-
SQLite 没有用户帐户概念,而是根据文件系统确定所有数据库的权限。这会使强制执行存储配额发生困难,强制执行用户许可变得不可能。
-
SQLite 支持多数(但不是全部)的 SQL92 标准。不受支持的一些功能包括完全触发器支持和可写视图。
如果您感到其中的任何限制会影响您的应用程序,那么您应该考虑使用完善的 DBMS。如果您可以解除这些限制问题,并且对快速灵活的嵌入式开源数据库引擎很感兴趣,则应重点考虑使用 SQLite。
一些能够真正表现 SQLite 优越性能的领域是 Web 站点,可以使用 SQLite 管理应用程序数据、快速应用程序原型制造和培训工具。
由于资源占用少、性能良好和零管理成本,嵌入式数据库有了它的用武之地,它将为那些以前无法提供用作持久数据的后端的数据库的应用程序提供了高效的性能。如今没有必要使用文本文件来实现持久存储。SQLite 之类的嵌入式数据库的易于使用性可以加快应用程序的开发,并使得小型应用程序能够完全支持复杂的 SQL。这一点对于对于小型设备空间的应用程序来说尤其重要。