分享IOS的数据库的查找,删除,添加,更新语句

悟途网 2013年06月10日 09:51 阅读()
字号 (A- A+)

DB类之.h文件
#import <Foundation/Foundation.h>
#import <sqlite3.h>

@interface DB : NSObject
+(sqlite3 *)openDB;//打开数据库
-(void)closeDB;//关闭数据库

@end

DB类之.m文件
#import "DB.h"
#import <sqlite3.h>
static sqlite3 *db = nil;
@implementation DB
+(sqlite3 *)openDB
{
if(db)
{
return db;
}
//目标路径
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDirectory, YES)objectAtIndex:0];
//原始路径
NSString *filePath = [docPath stringByAppendingPathComponent:@"db.sqlite"];

NSFileManager *fm = [NSFileManager defaultManager];

if ([fm fileExistsAtPath:filePath] == NO)//如果doc下没有数据库,从bundle里面拷贝过来

{
NSString *bundle = [[NSBundle mainBundle]pathForResource:@"classDB" ofType:@"sqlite"];

NSError *err = nil;

if ([fm copyItemAtPath:bundle toPath:filePath error:&err] == NO) //如果拷贝失败
{
NSLog(@"%@",[err localizedDescription]);
}


}
sqlite3_open([filePath UTF8String], &db);
return db; 
}
-(void)closeDB
{
if (db) 
{
sqlite3_close(db); 
}

}
@end
Person类.h文件
#import <Foundation/Foundation.h>

@interface Person : NSObject
@property(nonatomic,retain)NSString *name,*phone;
@property(nonatomic,assign)int age,ID;

-(id)initWithName:(NSString *)name phone:(NSString *)phone age:(int)age ID:(int)ID;

+(NSMutableArray *)findAll;
+(int)count;
+(Person *)findByID:(int)ID;
+(NSMutableArray *)findByname:(NSString *)name;
+(void)addName:(NSString *)name phone:(NSString *)phone age:(int)age;
+(void)deleteByID:(int)ID;
+(void)updataName:(NSString *)name phone:(NSString *)phone age:(int)age forID:(int)ID;
@end
Person类.m文件
#import "Person.h"
#import "DB.h"

@implementation Person
@synthesize name,ID,phone,age;
-(id)initWithName:(NSString *)aName phone:(NSString *)aPhone age:(int)aAge ID:(int)aID
{
[super init];

if (self) 
{
self.name = aName;
self.phone = aPhone;
self.age = aAge;
self.ID = aID;

}
return self;

}
-(NSString *)description
{
return [NSString stringWithFormat:@"id = %d name = %@ phone = %@ age = %d",self.ID,self.name,self.phone,self.age ];
}

+(NSMutableArray *)findAll

{
sqlite3 *db = [DB openDB];

sqlite3_stmt *stmt = nil;//创建一个声明对象

int result = sqlite3_prepare_v2(db, "select * from classDB order by ID ", -1, &stmt, nil);
NSMutableArray *persons = nil;

if (result == SQLITE_OK) 
{
persons = [[NSMutableArray alloc]init];
while (sqlite3_step(stmt) == SQLITE_ROW)
{
int ID = sqlite3_column_int(stmt, 0);

const unsigned char *name = sqlite3_column_text(stmt, 1);
const unsigned char *phone = sqlite3_column_text(stmt, 2);
int age = sqlite3_column_int(stmt, 3);

Person *p = [[Person alloc]initWithName:[NSString stringWithUTF8String:(const char *)name] phone:[NSString stringWithUTF8String:(const char *)phone] age:age ID:ID];
[persons addObject:p];
[p release];
}
}
else
{
persons = [[NSMutableArray alloc]init];
}
sqlite3_finalize(stmt);
return [persons autorelease];

 


}
+(int)count
{
sqlite3 *db = [DB openDB];
sqlite3_stmt *stmt = nil;
int result = sqlite3_prepare_v2(db, "select count(ID) from classDB", -1, &stmt, nil);

if (result == SQLITE_OK) 
{
int count = 0;
if (sqlite3_step(stmt))
{
count = sqlite3_column_int(stmt, 0);
}
sqlite3_finalize(stmt);
return count;
}
else
{
sqlite3_finalize(stmt);
return 0;
}
}
+(Person *)findByID:(int)ID
{
sqlite3 *db = [DB openDB];
sqlite3_stmt *stmt = nil;
Person *p = nil;
int result = sqlite3_prepare_v2(db, "select * from classDB where ID = ?", -1, &stmt, nil);
if (result == SQLITE_OK) 
{
sqlite3_bind_int(stmt, 1, ID);
if (sqlite3_step(stmt))
{
int ID = sqlite3_column_int(stmt, 0);

const unsigned char *name = sqlite3_column_text(stmt, 1);
const unsigned char *phone = sqlite3_column_text(stmt, 2);
int age = sqlite3_column_int(stmt, 3);

p = [[Person alloc]initWithName:[NSString stringWithUTF8String:(const char *)name] phone:[NSString stringWithUTF8String:(const char *)phone] age:age ID:ID];

}
}
sqlite3_finalize(stmt);
return [p autorelease];


}
+(NSMutableArray *)findByname:(NSString *)name
{

sqlite3 *db = [DB openDB];
sqlite3_stmt *stmt = nil;

int result = sqlite3_prepare(db, "select * from classDB where name = ?", -1, &stmt, nil);
NSMutableArray *persons = nil;
if (result == SQLITE_OK) 
{
sqlite3_bind_text(stmt, 1, [name UTF8String], -1, nil);

persons = [[NSMutableArray alloc]init];
while (sqlite3_step(stmt) == SQLITE_ROW) 
{
int ID = sqlite3_column_int(stmt, 0);
const unsigned char *name = sqlite3_column_text(stmt, 1);
const unsigned char *phone = sqlite3_column_text(stmt, 2);
int age = sqlite3_column_int(stmt, 3);

Person *p = [[Person alloc]initWithName:[NSString stringWithUTF8String:(const char *)name] phone:[NSString stringWithUTF8String:(const char *)phone] age:age ID:ID];

[persons addObject:p];
[p release];

}

}
else
{
persons = [[NSMutableArray alloc]init]; 
}
sqlite3_finalize(stmt);
return [persons autorelease];
}
//添加元素
+(void)addName:(NSString *)name phone:(NSString *)phone age:(int)age
{
NSString *str = [NSString stringWithFormat:@"insert into classDB(name,phone,age) values('%@','%@',%d)",name,phone,age];

sqlite3 *db = [DB openDB];
sqlite3_stmt *stmt = nil;

int result = sqlite3_prepare_v2(db, [str UTF8String],-1 ,&stmt , nil);
if (result == SQLITE_OK) 
{
sqlite3_step(stmt);
}
sqlite3_finalize(stmt);



}
//根据ID删除信息
+(void)deleteByID:(int)ID
{
NSString *str = [NSString stringWithFormat:@"delete from classDB where ID = %d",ID];
sqlite3 *db = [DB openDB];
sqlite3_stmt *stmt = nil;

int result = sqlite3_prepare_v2(db, [str UTF8String], -1, &stmt, nil);

if (result == SQLITE_OK)
{
sqlite3_step(stmt);
}
sqlite3_finalize(stmt);
}
//更新
+(void)updataName:(NSString *)name phone:(NSString *)phone age:(int)age forID:(int)ID
{
NSString *str = [NSString stringWithFormat:@"update classDB set name = '%@',phone = '%@',age = %d where ID = %d",name,phone,age,ID];
sqlite3 *db = [DB openDB];
sqlite3_stmt *stmt = nil;

int result = sqlite3_prepare_v2(db, [str UTF8String], -1, &stmt, nil);

if (result == SQLITE_OK) 
{
sqlite3_step(stmt);

}
sqlite3_finalize(stmt);

}
@end

热门文章
随机推荐
iPhone6s有必要升级iOS11系统吗?iOS11好用吗?

iPhone6s有必要升级iOS11系统吗

iPhone6s升级iOS10.3.2好用吗?要不要升级iOS11呢?想必有很...

iPhone小圆点AssistiveTouch使用大全

iPhone小圆点AssistiveTouch使用

小圆点AssistiveTouch并不是随iPhone出生一起诞生的,直到...

苹果iPhone手机手电筒亮度调节教程

苹果iPhone手机手电筒亮度调

苹果在最新的iOS10系统中带来了不少改进,其中iPhone6...

怎么在ios代码控制出现控件的阴影

怎么在ios代码控制出现控件

怎么在ios代码控制出现控件的阴影,只需要把对应的空...

防止孩子删除iPhone手机App应用的方法

防止孩子删除iPhone手机App应

随着iPhone的普及,经常可以看到玩iPhone手机的孩子。在...

如何更快更好用iPhone6加速优化方法

如何更快更好用iPhone6加速优

怎样在不影响主体功能的前提下尽量提高iPhone6的性能呢...

iOS 9越狱后必备插件汇总

iOS 9越狱后必备插件汇总

iOS9必备插件有哪些?盘古大神iOS9完美越狱出来啦,越...

iPhone手机怎么设置一个回电提醒的方法

iPhone手机怎么设置一个回电

来电并不总是在适当的时候出现,如果你的iPhone在开会...