首先要先导入第三方类库FMdatabase
获得存放数据库文件的沙盒地址 +(NSString *)databaseFilePath {
NSArray
*filePath = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory
,NSUserDomainMask
,
YES
);
NSString *documentPath = [filePath
objectAtIndex:
0];
NSLog(
@"%@",filePath);
NSString *dbFilePath = [documentPath
stringByAppendingPathComponent:
@"db.sqlite"];
return dbFilePath;
}
创建数据库的操作 +(void)creatDatabase {
db
= [[
FMDatabasedatabaseWithPath
:[
selfdatabaseFilePath
]]
retain
];
}
创建表 +(void)creatTable {
//先判断数据库是否存在,如果不存在,创建数据库
if (!
db) {
[
selfcreatDatabase
];
}
//判断数据库是否已经打开,如果没有打开,提示失败
if (![
db
open]) {
NSLog
(@"
数据库打开失败"
); return
;
}
//为数据库设置缓存,提高查询效率
[
dbsetShouldCacheStatements
:
YES
];
//判断数据库中是否已经存在这个表,如果不存在则创建该表
if
(![
dbtableExists
:
@"people"
]) {
[
db
executeUpdate
:@"CREATE TABLES people(people_id INTEGER PRIMARY KEY AUTOINCREAMENT,name TEXT,age INTEGER) "
];
NSLog
(@"
创建完成"
);
}
}
增加表数据 +(void)insertPeople:(People *)aPeople {
if (!
db) {
[
selfcreatDatabase
];
}
if (![
db
open]) {
NSLog
(@"
数据库打开失败"
); return
;
}
[
dbsetShouldCacheStatements
:
YES
];
if
(![
dbtableExists
:
@"people"
]) {
[
selfcreatTable
];
}
//以上操作与创建表是做的判断逻辑相同
//现在表中查询有没有相同的元素,如果有,做修改操作
FMResultSet
*rs = [
db
executeQuery
:@"select * from people where people_id = ?"
,[
NSString
stringWithFormat
:@"%d"
,aPeople.
peopleID
]];
if([rs
next])
{
NSLog
(@"dddddslsdkien"
);
[
db
executeUpdate
:@"update people set name = ?,age = ? where people_id = 1"
,aPeople.
name
,[
NSString
stringWithFormat
:@"%d"
,aPeople.
age
]];
}
//向数据库中插入一条数据
else
{
[
db
executeUpdate
:@"INSERT INTO people (name,age) VALUES (?,?)"
,aPeople.
age
]];
}
}
删除数据 +(void)deletePeopleByID:(int)ID {
if (!
db) {
[
selfcreatDatabase
];
}
if (![
db
open]) {
NSLog
(@"
数据库打开失败"
); return
;
}
[
dbsetShouldCacheStatements
:
YES
];
//判断表中是否有指定的数据, 如果没有则无删除的必要,直接return
if
(![
dbtableExists
:
@"people"
]) {
return
;
}
//删除操作
[
db
executeUpdate
:@"delete from people where people_id = ?"
,ID]];
[
db
close];
}
修改操作与增加操作的步骤一致
查询 +(NSArray *)getAllPeople {
if (!
db) {
[
selfcreatDatabase
];
}
if (![
db
open]) {
NSLog
(@"
数据库打开失败"
); return nil
;
}
[
dbsetShouldCacheStatements
:
YES
];
if
(![
dbtableExists
:
@"people"
]) {
return nil
;
}
//定义一个可变数组,用来存放查询的结果,返回给调用者
NSMutableArray
*peopleArray = [[NSMutableArray
alloc
]
initWithArray
:
0
];
//定义一个结果集,存放查询的数据
FMResultSet
*rs = [
db
executeQuery
:@"select * from people"
];
//判断结果集中是否有数据,如果有则取出数据
while ([rs
next]) {
People *aPeople = [[
People
alloc]
init];
aPeople.
peopleID = [rs
intForColumn:
@"people_id"];
aPeople.
name = [rs
stringForColumn:
@"name"];
aPeople.
age = [rs
intForColumn:
@"age"];
//将查询到的数据放入数组中。
[peopleArray
addObject:aPeople];
}
return [peopleArray
autorelease];
}
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|