導入libsqlite3.0.dylib
#import <sqlite3.h>
//創建數據庫
+(void) creatDataBase
{
// if (dbPoint) {
// return dbPoint;
// }
//目標路徑
NSString * docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString * filePath=[docPath stringByAppendingPathComponent:@"PersonDB.rdb"];
NSLog(@"%@",filePath);
NSFileManager * manager=[[NSFileManageralloc] init];
if ([manager fileExistsAtPath:filePath]) {
[manager removeItemAtPath:filePath error:nil];
NSLog(@"文件存在");
}
[manager release];
//創建數據庫
if (sqlite3_open([filePath UTF8String], &dbPoint)!=SQLITE_OK) {
sqlite3_close(dbPoint);
NSLog(@"打開失敗");
}
//創建表
sqlite3_stmt * stmt=nil;
int result=sqlite3_exec(dbPoint, "create table if not exists class(ID integer primary key,name text,sex text,del text,image BLOB)", nil, nil, nil);
if (result==SQLITE_OK) {
//sqlite3_finalize(stmt);
NSLog(@"創建成功");
}
sqlite3_finalize(stmt);
sqlite3_close(dbPoint);
}
--------------------------------------------------------------------------------------------------------------------
static sqlite3 * dbPoint=nil;
//打開數據庫
+(sqlite3 *) openDB
{
if (dbPoint) {
return dbPoint;
}
//目標文件路徑
NSString * docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString * filePath=[docPath stringByAppendingPathComponent:@"Studentdb.rdb"];
//原始路徑
NSString * orignFilePath=[[NSBundle mainBundle] pathForResource:@"Studentdb" ofType:@"rdb"];
//文件管理
NSFileManager * manager=[NSFileManagerdefaultManager];
//如果不存在數據庫則從bundle拷貝
if ([manager fileExistsAtPath:filePath]==NO) {
//如果拷貝失敗
if ([manager copyItemAtPath:orignFilePath toPath:filePath error:nil]==NO) {
return nil;
}
}
sqlite3_open([filePath UTF8String], &dbPoint);
return dbPoint;
}
//關閉數據庫
+(void) clodeDB
{
if (dbPoint) {
sqlite3_close(dbPoint);
}
}
----------------------------------------------------------------------------------------------
+(NSMutableArray *)findAll;//所有人
//按ID查找人
+(Person *)findByID:(int)ID;
//總人數
+(int) count;
//更改人物信息
+(BOOL) updateName:(NSString *)name del:(NSString *)del age:(int)age whereID:(int)ID;
//增加人物
+(BOOL) addName:(NSString *)name del:(NSString *)del age:(int)age;
//刪除人物
+(BOOL) deletewhereID:(int)ID;
//查詢所有人
+(NSMutableArray *)findAll
{
//打開數據庫
sqlite3 * db=[Link openDB];
//陳述
sqlite3_stmt * stmt=nil;
//準備SQL語句
int result=sqlite3_prepare_v2(db, "select * from student", -1, &stmt, nil);
if (result==SQLITE_OK) {
NSMutableArray * allObject=[[NSMutableArray alloc] init];
//單步執行語句
while (SQLITE_ROW==sqlite3_step(stmt)) {
int ID=sqlite3_column_int(stmt, 0);//第一字段
const unsigned char * name=sqlite3_column_text(stmt, 1);//第二字段
const unsigned char * del=sqlite3_column_text(stmt, 2);//第三字段
int age=sqlite3_column_int(stmt, 3);//第四字段
Person * person=[[Person alloc] initWithName:[NSString stringWithUTF8String:(char *)name] andDel:[NSString stringWithUTF8String:(char *)del] andAge:age andID:ID];
[allObject addObject:person];
[person release];
}
//釋放stmt對象
sqlite3_finalize(stmt);
return [allObject autorelease];
}
//釋放stmt對象
sqlite3_finalize(stmt);
returnnil;
}
//按ID查找
+(Person *) findByID:(int)ID
{
//打開數據庫
sqlite3 * db=[Link openDB];
//陳述
sqlite3_stmt * stmt=nil;
//準備SQL語句
int result=sqlite3_prepare_v2(db, "select * from student where ID=?", -1, &stmt, nil);
if (result==SQLITE_OK) {
//將第一個?替換爲ID
sqlite3_bind_int(stmt, 1, ID);
while (SQLITE_ROW==sqlite3_step(stmt)) {
const unsigned char * name=sqlite3_column_text(stmt, 1);//第二字段
const unsigned char * del=sqlite3_column_text(stmt, 2);//第三字段
int age=sqlite3_column_int(stmt, 3);//第四字段
Person * person=[[Person alloc] initWithName:[NSString stringWithUTF8String:(char *)name] andDel:[NSString stringWithUTF8String:(char *)del] andAge:age andID:ID];
sqlite3_finalize(stmt);
return [person autorelease];
}
}
sqlite3_finalize(stmt);
returnnil;
}
//總人數
+(int) count
{
//打開數據庫
sqlite3 * db=[Link openDB];
//陳述
sqlite3_stmt * stmt=nil;
//準備SQL語句
int result=sqlite3_prepare_v2(db, "select count (*) from student", -1, &stmt, nil);
if (result==SQLITE_OK) {
if (SQLITE_ROW==sqlite3_step(stmt)) {
int count=sqlite3_column_int(stmt, 0);
sqlite3_finalize(stmt);
return count;
}
}
sqlite3_finalize(stmt);
return 0;
}
//更改人物信息
+(BOOL) updateName:(NSString *)name del:(NSString *)del age:(int)age whereID:(int)ID
{
//打開數據庫
sqlite3 *db=[Link openDB];
//陳述
sqlite3_stmt * stmt=nil;
//準備SQl語句
int result=sqlite3_prepare_v2(db, "update student set name=?,age=?,del=? where ID=?", -1, &stmt, nil);
if (result==SQLITE_OK) {
sqlite3_bind_text(stmt, 1, [name UTF8String], -1, nil);//將第一個?替換成name
sqlite3_bind_int(stmt, 2, age);//將第二個?替換成age
sqlite3_bind_text(stmt, 3, [del UTF8String], -1, nil);//將第三個?替換成del
sqlite3_bind_int(stmt, 4, ID);//將第四個?替換成ID
if(sqlite3_step(stmt)==SQLITE_DONE){
NSLog(@"更改成功");
sqlite3_finalize(stmt);
return YES;
}
}
sqlite3_finalize(stmt);
NSLog(@"更改失敗");
returnNO;
}
//增加人物
+(BOOL) addName:(NSString *)name del:(NSString *)del age:(int)age
{
//打開數據庫
sqlite3 * db=[Link openDB];
//陳述
sqlite3_stmt * stmt=nil;
//準備SQL語句
int result=sqlite3_prepare_v2(db, "insert into student(name,del,age) values (?,?,?)", -1, &stmt, nil);
if (result==SQLITE_OK) {
sqlite3_bind_text(stmt, 1, [name UTF8String], -1, nil);//將第一個?替換成name
sqlite3_bind_int(stmt, 2, age);//將第二個?替換成age
sqlite3_bind_text(stmt, 3, [del UTF8String], -1, nil);//將第三個?替換成del
if (sqlite3_step(stmt)==SQLITE_DONE) {
NSLog(@"添加成功");
sqlite3_finalize(stmt);
return YES;
}
}
NSLog(@"添加失敗");
sqlite3_finalize(stmt);
returnNO;
}
//刪除人物
+(BOOL) deletewhereID:(int)ID
{
//打開數據庫
sqlite3 * db=[Link openDB];
//陳述
sqlite3_stmt * stmt=nil;
//準備SQL語句
int result=sqlite3_prepare_v2(db, "delete from student where ID=?", -1, &stmt, nil);
if (result==SQLITE_OK) {
//將第一個?替換爲ID
sqlite3_bind_int(stmt, 1, ID);
if (sqlite3_step(stmt)==SQLITE_DONE) {
NSLog(@"刪除成功");
sqlite3_finalize(stmt);
return YES;
}
}
NSLog(@"刪除失敗");
sqlite3_finalize(stmt);
returnNO;
}
-----------------------------------------------------------------------------------------------------------------------
數據庫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.