There is also sqlite3 in Android, mainly to record some basic grammars, ios provides encapsulated classes, and there is no need for the following operations
1. Create a database
#pragma mark - open database -(BOOL)openDataBase{ //1, store the path, store the document in the sandbox of the current application // NSArray *arrayPath=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); // // NSString *documentPath= [arrayPath objectAtIndex:0];//document路径 NSString *documentPath= [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; //database path NSString *sqlPath=[documentPath stringByAppendingPathComponent:@"applicationData.db"]; //open database //sqlPath.UTF8String converted to c string, pointer to sqlite3 int result=sqlite3_open(sqlPath.UTF8String,&db); if (result==SQLITE_OK) { [self showDialogError:@"database open" andContent:@"success"]; return true; }else{ sqlite3_close(db); return false; } }
2. Create database tables
#pragma mark-create database table -(BOOL)createTable:(NSMutableDictionary*) createTableRowParams{ char *sql; //create sql statement if ([createTableRowParams count]>0) { }else{ sql= "create table if not exists UCS(id integer primary key,loginTime text,page text,pageCount integer);"; } char *error=nil; //Execute sql statement sqlite3_exec(db, sql, nil, nil, &error); if (error==nil) { NSLog(@"The table was created successfully.."); }else{ NSLog(@"Failed to create table.."); } return true; }
3. Insert data:
////Insert data -(void)insertTableData:(NSArray*)arrayData{ NSDate * senddate=[NSDate date]; NSDateFormatter *dateformatter=[[NSDateFormatter alloc] init]; [dateformatter setDateFormat:@"YYYYMMddHHmmss"]; NSString * morelocationString=[dateformatter stringFromDate:senddate]; char *error=nil; for(int n=0;n<10;n++){ // NSString *sql=[[NSString alloc]initWithFormat:@"insert into UCS(loginTime,page) values(?,?)",morelocationString,@"baihe"]; // char *sql1 = @"insert into UCS(loginTime,page) values(?,?)"; // // sqlite3_exec(db, sql1, NULL, NULL, &error); // // } char *sql="insert into UCS(loginTime,page,pageCount) values(?,?,?)"; sqlite3_stmt *stmt=nil; if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL)==SQLITE_OK) { sqlite3_bind_text(stmt, 1, "loginTimedata", -1, NULL); sqlite3_bind_text(stmt, 2, "pagedata", -1, NULL); sqlite3_bind_int(stmt, 3, 100); } if (sqlite3_step(stmt)!=SQLITE_DONE) { NSLog(@"Failed to insert data."); }else{ NSLog(@"Insert data successfully"); } sqlite3_finalize(stmt);//Release } }
Query data:
//Inquire -(void)selectTableData{ // NSString *sql=@"select * from UCS"; char *sql="select * from UCS;"; // sqlite3_stmt *ppStmt; // step through the statement if (sqlite3_prepare_v2(db, sql, -1, &ppStmt, NULL) == SQLITE_OK) { while (sqlite3_step(ppStmt)==SQLITE_ROW) { int id5=sqlite3_column_int(ppStmt, 0); char *cc=(char *)sqlite3_column_text(ppStmt, 2); int id6=sqlite3_column_int(ppStmt, 3); NSString *loginTime=[NSString stringWithUTF8String:cc]; NSLog(@"id=%d,loginTime=%@ %d",id5,loginTime,id6); } } sqlite3_finalize(ppStmt);//Release }
delete and update are similar