萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> ios >> IOS之數據庫的查找,刪除,添加,更新

IOS之數據庫的查找,刪除,添加,更新

 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

copyright © 萬盛學電腦網 all rights reserved