//首先添加framework------- libsqlite3.0.dylib //头文件 #import "/usr/include/sqlite3.h" @interface ViewController : UIViewController<UIPopoverControllerDelegate, UISplitViewControllerDelegate> - (void)viewDidLoad { [super viewDidLoad]; //打开 如果没有。则创建。 [self openDatabase]; //创建表 [self createDatabaseTable]; //在表中插入数据 [self insertDatabaseTable]; //查询 [self queryDatabaseTable]; //删 [self deleteDatabaseTable]; } //打开 如果没有。则创建。 -(void)openDatabase { NSArray *documentsPaths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask , YES); NSString *databaseFilePath=[[documentsPaths objectAtIndex:0] stringByAppendingPathComponent:@"mydb.sql"]; if (sqlite3_open([databaseFilePath UTF8String], &database)==SQLITE_OK) { NSLog(@"open sqlite mydb ok."); } else { NSLog( @"can not open sqlite mydb " ); //close database sqlite3_close(database); } } //创建表 -(void)createDatabaseTable { char *errorMsg; const char *createSql="create table if not exists persons (id integer primary key autoincrement,name text)"; if (sqlite3_exec(database, createSql, NULL, NULL, &errorMsg)==SQLITE_OK) { NSLog(@"create ok."); } else { NSLog( @"can not create table" ); //[self ErrorReport:(NSString *)createSql]; } } //在表中插入数据 - (void)insertDatabaseTable { char *errorMsg; const char *insertSql="insert into persons (name) values ('qingjoin')"; if (sqlite3_exec(database, insertSql, NULL, NULL, &errorMsg)==SQLITE_OK) { NSLog(@"insert ok."); } else { NSLog( @"can not insert it to table" ); //[self ErrorReport: (NSString *)insertSql]; } } - (void)ErrorReport: (NSString *)item { char *errorMsg; if (sqlite3_exec(database, (const char *)item, NULL, NULL, &errorMsg)==SQLITE_OK) { NSLog(@"%@ ok.",item); } else { NSLog(@"error: %s",errorMsg); sqlite3_free(errorMsg); } } //查询 - (void)queryDatabaseTable { const char *selectSql="select id,name from persons"; sqlite3_stmt *statement; if (sqlite3_prepare_v2(database, selectSql, -1, &statement, nil)==SQLITE_OK) { NSLog(@"select ok."); while (sqlite3_step(statement)==SQLITE_ROW)//SQLITE_OK SQLITE_ROW { int _id=sqlite3_column_int(statement, 0); NSString *name=[[NSString alloc] initWithCString:(char *)sqlite3_column_text(statement, 1) encoding:NSUTF8StringEncoding]; NSLog(@"row>>id %i, name>> %@",_id,name); } } else { //error [self ErrorReport: (NSString *)selectSql]; } sqlite3_finalize(statement); } //删除 - (void)deleteDatabaseTable { char *errorMsg; [self openDatabase]; const char *sql = "DELETE FROM persons where id=24"; if (sqlite3_exec(database, sql, NULL, NULL, &errorMsg)==SQLITE_OK) { NSLog(@"delete ok."); } else { NSLog( @"can not delete it" ); [self ErrorReport: (NSString *)sql]; } } /*结果显示: 2012-10-11 17:31:13.401 sqlistDemo[3960:f803] open sqlite mydb ok. 2012-10-11 17:31:13.403 sqlistDemo[3960:f803] create ok. 2012-10-11 17:31:13.406 sqlistDemo[3960:f803] insert ok. 2012-10-11 17:31:13.407 sqlistDemo[3960:f803] select ok. 2012-10-11 17:31:13.407 sqlistDemo[3960:f803] row>>id 1, name>> qingjoin 2012-10-11 17:31:13.411 sqlistDemo[3960:f803] delete ok. */