清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
- 首先要先导入第三方类库FMdatabase。
- 获得存放数据库文件的沙盒地址。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
+(NSString*)databaseFilePath
[objc] view plaincopy
{
NSArray*filePath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString*documentPath=[filePathobjectAtIndex:0];
NSLog(@
"%@"
,filePath);
NSString*dbFilePath=[documentPathstringByAppendingPathComponent:@
"db.sqlite"
];
returndbFilePath;
}
3、创建数据库的操作
+(
void
)creatDatabase
{
db=[[FMDatabasedatabaseWithPath:[selfdatabaseFilePath]]retain];
}
4、创建表
+(
void
)creatTable
{
//先判断数据库是否存在,如果不存在,创建数据库
if
(!db){
[selfcreatDatabase];
}
//判断数据库是否已经打开,如果没有打开,提示失败
if
(![dbopen]){
NSLog(@
"数据库打开失败"
);
return
;
}
//为数据库设置缓存,提高查询效率
[dbsetShouldCacheStatements:YES];
//判断数据库中是否已经存在这个表,如果不存在则创建该表
if
(![dbtableExists:@
"people"
])
{
[dbexecuteUpdate:@
"CREATETABLES people(people_id INTEGER PRIMARY KEY AUTOINCREAMENT, nameTEXT, age INTEGER) "
];
NSLog(@
"创建完成"
);
}
}
5、增加表数据
+(
void
)insertPeople:(People*)aPeople
{
if
(!db){
[selfcreatDatabase];
}
if
(![dbopen]){
NSLog(@
"数据库打开失败"
);
return
;
}
[dbsetShouldCacheStatements:YES];
if
(![dbtableExists:@
"people"
])
{
[selfcreatTable];
}
//以上操作与创建表是做的判断逻辑相同
//现在表中查询有没有相同的元素,如果有,做修改操作
FMResultSet*rs=[dbexecuteQuery:@
"select* from people where people_id = ?"
,[NSStringstringWithFormat:@
"%d"
,aPeople.peopleID]];
if
([rsnext])
{
NSLog(@
"dddddslsdkien"
);
[dbexecuteUpdate:@
"updatepeople set name = ?, age = ? where people_id =1"
,aPeople.name,[NSStringstringWithFormat:@
"%d"
,aPeople.age]];
}
//向数据库中插入一条数据
else
{
[dbexecuteUpdate:@
"INSERTINTO people (name, age) VALUES(?,?)"
,aPeople.name,[NSStringstringWithFormat:@
"%d"
,aPeople.age]];
}
}
6、删除数据
+(
void
)deletePeopleByID:(
int
)ID
{
if
(!db){
[selfcreatDatabase];
}
if
(![dbopen]){
NSLog(@
"数据库打开失败"
);
return
;
}
[dbsetShouldCacheStatements:YES];
//判断表中是否有指定的数据, 如果没有则无删除的必要,直接return
if
(![dbtableExists:@
"people"
])
{
return
;
}
//删除操作
[dbexecuteUpdate:@
"deletefrom people where people_id = ?"
, [NSStringstringWithFormat:@
"%d"
,ID]];
[dbclose];
}
7、修改操作与增加操作的步骤一致
+(NSArray*)getAllPeople
{
if
(!db){
[selfcreatDatabase];
}
if
(![dbopen]){
NSLog(@
"数据库打开失败"
);
returnnil;
}
[dbsetShouldCacheStatements:YES];
if
(![dbtableExists:@
"people"
])
{
returnnil;
}
//定义一个可变数组,用来存放查询的结果,返回给调用者
NSMutableArray*peopleArray=[[NSMutableArrayalloc]initWithArray:0];
//定义一个结果集,存放查询的数据
FMResultSet*rs=[dbexecuteQuery:@
"select* from people"
];
//判断结果集中是否有数据,如果有则取出数据
while
([rsnext]){
People*aPeople=[[Peoplealloc]init];
aPeople.peopleID=[rsintForColumn:@
"people_id"
];
aPeople.name=[rsstringForColumn:@
"name"
];
aPeople.age=[rsintForColumn:@
"age"
];
//将查询到的数据放入数组中。
[peopleArrayaddObject:aPeople];
}
return
[peopleArrayautorelease];
}
8、查询
+(NSArray*)getAllPeople
{
if
(!db){
[selfcreatDatabase];
}
if
(![dbopen]){
NSLog(@
"数据库打开失败"
);
returnnil;
}
[dbsetShouldCacheStatements:YES];
if
(![dbtableExists:@
"people"
])
{
returnnil;
}
//定义一个可变数组,用来存放查询的结果,返回给调用者
NSMutableArray*peopleArray=[[NSMutableArrayalloc]initWithArray:0];
//定义一个结果集,存放查询的数据
FMResultSet*rs=[dbexecuteQuery:@
"select* from people"
];
//判断结果集中是否有数据,如果有则取出数据
while
([rsnext]){
People*aPeople=[[Peoplealloc]init];
aPeople.peopleID=[rsintForColumn:@
"people_id"
];
aPeople.name=[rsstringForColumn:@
"name"
];
aPeople.age=[rsintForColumn:@
"age"
];
//将查询到的数据放入数组中。
[peopleArrayaddObject:aPeople];
}
return
[peopleArrayautorelease];
}