Android中SQLite应用详解Word文档格式.docx
- 文档编号:20965229
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:30
- 大小:206.98KB
Android中SQLite应用详解Word文档格式.docx
《Android中SQLite应用详解Word文档格式.docx》由会员分享,可在线阅读,更多相关《Android中SQLite应用详解Word文档格式.docx(30页珍藏版)》请在冰豆网上搜索。
with
a
;
5.sqlite>
.databases
6.seq
name
file
7.
8.---
---------------
----------------------------------------------------------
9.
10.0
main
D:
\test.db
11.
12.sqlite>
我们执行了sqlite3命令,参数就是数据库的名称,如果该数据库已存在,则使用,如果不存在,则新建一个,这里我们简单的在当前位置创建了test.db,你也可以在任何存在的并且可写的目录下创建自己的数据库。
(如果对于SQLite的命令不太熟悉,可以执行“.help”命令列出所有的命令清单进行查看)。
创建表:
1.sqlite>
CREATE
TABLE
person
(id
INTEGER
PRIMARY
KEY
AUTOINCREMENT,
VARCHAR(20),
age
SMALLINT);
2.sqlite>
.tables
3.person
4.sqlite>
.schema
5.CREATE
6.sqlite>
在我们创建表之后,可以用“.tables”命令去查看已有的表,用“.schema”命令去查看表的结构,如果后面没有表名做参数,则将会输出所有表的建表语句。
插入数据:
INSERT
INTO
VALUES
(NULL,
'
john'
30);
SELECT
*
FROM
person;
3.1|john|30
从.sql文件导入数据:
.read
test.sql
4.2|david|35
5.3|henry|40
分析数据库使用状态:
sqlite3_analyzer
2./**
Disk-Space
Utilization
Report
For
3.
4.Page
size
in
bytes....................
1024
5.Pages
the
whole
(measured)....
4
6.Pages
(calculated)..
7.Pages
that
store
data.................
100.0%
8.Pages
on
freelist
(per
header)....
0
0.0%
9.Pages
(calculated)....
10.Pages
of
auto-vacuum
overhead.........
11.Number
tables
database......
12.Number
indices.....................
13.Number
named
indices...............
14.Automatically
generated
indices.......
15.Size
bytes.............
4096
16.Bytes
user
payload
stored..........
39
0.95%
17....
备份数据库:
备份SQLite数据库有两种方法。
如果数据库正在使用中,则应从命令行界面使用.dump命令。
这样可以创建一个包含必要命令和数据的文件,从而重新创建数据库。
.dump命令也可以用于备份数据库表。
.dump
2.PRAGMA
foreign_keys=OFF;
3.BEGIN
TRANSACTION;
4.CREATE
5.INSERT
person"
VALUES(1,'
30);
6.INSERT
VALUES(2,'
david'
35);
7.INSERT
VALUES(3,'
henry'
40);
8.DELETE
sqlite_sequence;
9.INSERT
sqlite_sequence"
VALUES('
person'
3);
10.COMMIT;
11.sqlite>
.output
dump.sql
13.sqlite>
我们可以指定输出的目标为一个文件,然后再使用命令时,输出信息就会写入指定的文件,如果想恢复为标准输出,可以这样设定:
stdout
3.PRAGMA
4.BEGIN
8.INSERT
9.DELETE
10.INSERT
11.COMMIT;
如果数据库没有处于使用状态,则可以直接将数据库文件复制到安全位置。
最后,我们可以使用“.quit”或“.exit”退出SQLite。
管理工具:
现在网络上的SQLite管理工具很多,我向大家推荐一款好用的工具:
SQLiteExpert。
在Java中使用SQLite:
我们要想在Java中使用SQLite,需要下载SQLite相关驱动,推荐大家到http:
//www.xerial.org/trac/Xerial/wiki/SQLiteJDBC页面去下载最新的驱动包,现在最新版本是sqlite-jdbc-3.7.2.jar,体积有点大,因为它包含了Linux、Mac、Windows的本地类库,如图:
下载了驱动之后,我们新建一个项目,名为sqlite:
在上图中,我们引入sqlite驱动包到类路径下,然后建立一个db的文件夹,用于放置数据库文件。
最后我们看一下Test.java代码:
[java]
1.package
com.scott.sqlite;
2.import
java.sql.Connection;
3.import
java.sql.DriverManager;
4.import
java.sql.ResultSet;
5.import
java.sql.Statement;
6.
7.public
class
Test
{
8.
public
static
void
main(String[]
args)
throws
Exception
Class.forName("
org.sqlite.JDBC"
);
10.
Connection
conn
=
DriverManager.getConnection("
jdbc:
sqlite:
db/test.db"
Statement
stmt
conn.createStatement();
12.
13.
stmt.executeUpdate("
DROP
IF
EXISTS
14.
person(id
INTEGER,
STRING)"
15.
VALUES(1,
)"
16.
VALUES(2,
17.
VALUES(3,
18.
ResultSet
rs
stmt.executeQuery("
19.
while
(rs.next())
20.
System.out.println("
id=>
+
rs.getInt("
id"
)
name=>
rs.getString("
name"
));
21.
}
22.
stmt.close();
23.
conn.close();
24.
25.}
执行Test.java文件,结果如下:
这个时候,在我们的db目录下,就生成了一个test.db的文件:
SQLite使用须知:
目前没有可用于SQLite的网络服务器。
从应用程序运行位于其他计算机上的SQLite的惟一方法是从网络共享运行。
这样会导致一些问题,像UNIX®
和Windows®
网络共享都存在文件锁定问题。
还有由于与访问网络共享相关的延迟而带来的性能下降问题。
SQLite只提供数据库级的锁定。
SQLite没有用户帐户概念,而是根据文件系统确定所有数据库的权限。
上次我向大家介绍了SQLite的基本信息和使用过程,相信朋友们对SQLite已经有所了解了,那今天呢,我就和大家分享一下在Android中如何使用SQLite。
现在的主流移动设备像Android、iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧。
对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取。
下面就向大家介绍一下SQLite常用的操作方法,为了方便,我将代码写在了Activity的onCreate中:
1.
@Override
2.
protected
onCreate(Bundle
savedInstanceState)
super.onCreate(savedInstanceState);
4.
5.
//打开或创建test.db数据库
SQLiteDatabase
db
openOrCreateDatabase("
test.db"
Context.MODE_PRIVATE,
null);
db.execSQL("
//创建person表
(_id
VARCHAR,
SMALLINT)"
Person
new
Person();
person.name
john"
person.age
30;
//插入数据
?
Object[]{person.name,
person.age});
david"
33;
//ContentValues以键值对的形式存放数据
ContentValues
cv
ContentValues();
cv.put("
person.name);
age"
person.age);
//插入ContentValues中的数据
db.insert("
null,
cv);
25.
26.
35);
27.
//更新数据
28.
db.update("
cv,
String[]{"
});
29.
30.
Cursor
c
db.rawQuery("
WHERE
>
33"
31.
(c.moveToNext())
32.
int
_id
c.getInt(c.getColumnIndex("
_id"
33.
String
c.getString(c.getColumnIndex("
34.
35.
Log.i("
db"
_id=>
age=>
age);
36.
37.
c.close();
38.
39.
//删除数据
40.
db.delete("
<
35"
41.
42.
//关闭当前数据库
43.
db.close();
44.
45.
//删除test.db数据库
46.//
deleteDatabase("
47.
在执行完上面的代码后,系统就会在/data/data/[PACKAGE_NAME]/databases目录下生成一个“test.db”的数据库文件,如图:
上面的代码中基本上囊括了大部分的数据库操作;
对于添加、更新和删除来说,我们都可以使用
1.db.executeSQL(String
sql);
2.db.executeSQL(String
sql,
Object[]
bindArgs);
//sql语句中使用占位符,然后第二个参数是实际的参数集
除了统一的形式之外,他们还有各自的操作方法:
1.db.insert(String
table,
nullColumnHack,
values);
2.db.update(String
Contentvalues
values,
whereClause,
whereArgs);
3.db.delete(String
以上三个方法的第一个参数都是表示要操作的表名;
insert中的第二个参数表示如果插入的数据每一列都为空的话,需要指定此行中某一列的名称,系统将此列设置为NULL,不至于出现错误;
insert中的第三个参数是ContentValues类型的变量,是键值对组成的Map,key代表列名,value代表该列要插入的值;
update的第二个参数也很类似,只不过它是更新该字段key为最新的value值,第三个参数whereClause表示WHERE表达式,比如“age>
?
andage<
”等,最后的whereArgs参数是占位符的实际参数值;
delete方法的参数也是一样。
下面来说说查询操作。
查询操作相对于上面的几种操作要复杂些,因为我们经常要面对着各种各样的查询条件,所以系统也考虑到这种复杂性,为我们提供了较为丰富的查询形式:
1.db.rawQuery(String
String[]
selectionArgs);
2.db.query(String
columns,
selection,
selectionArgs,
groupBy,
having,
orderBy);
3.db.query(String
orderBy,
limit);
4.db.query(String
distinct,
上面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android SQLite 应用 详解