获得存放数据库文件的沙盒地址。 +(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];
}