iOS学习笔记16-SQLite应用
?/**
?? ? *
? ? ?
?? ? 應(yīng)用數(shù)據(jù)庫(kù)步驟:
?? ? 1,sqlite3_open:打開(kāi)或者創(chuàng)建數(shù)據(jù)庫(kù)并做連接操作
?? ? 2,用sql語(yǔ)句,創(chuàng)建數(shù)據(jù)庫(kù)
?? ? 3,無(wú)返回值時(shí),用exec語(yǔ)句操作執(zhí)行數(shù)據(jù)庫(kù)語(yǔ)句
?? ? 4,有返回值時(shí),用prepare語(yǔ)句查詢函數(shù),結(jié)果集遍歷得到結(jié)果,遍歷語(yǔ)句sqlite_step(stmt) == SQLITE_ROW
?? ? 5,將記錄中的字段解成字句 sqlite_column_XXX (結(jié)果集,字段的索引值)
?? ? **/
?
?
?
首先引用sqlite3數(shù)據(jù)庫(kù)文件
?
取到文件夾路徑
?NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];
? ? NSLog(@"%@",document);
?
要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)的路徑
? ??NSString *dbFilePath = [document stringByAppendingString:@"/db.sqlite"];
?
??/**
?? ? *創(chuàng)建數(shù)據(jù)庫(kù)
?? ? **/
?sqlite3 *db;//與底層數(shù)據(jù)庫(kù)的連接
? ? if (sqlite3_open([dbFilePath UTF8String], &db) == SQLITE_OK) {//打開(kāi)數(shù)據(jù)庫(kù)成功選擇宏的名字//此處表示創(chuàng)建成功
? ? ? ? NSLog(@"創(chuàng)建數(shù)據(jù)庫(kù)成功");
? ? }
/**
?? ? *在數(shù)據(jù)庫(kù)里面添加數(shù)據(jù)
?? ? **/
? ? NSString *createTableSql = @"create table Stu3(id integer primary key autoincrement,name text,password text)";//創(chuàng)建表的sq語(yǔ)句
? ? if(sqlite3_exec(db, [createTableSql UTF8String], NULL, NULL, NULL) == SQLITE_OK)
? ? {
?? ? ? ? ? NSLog(@"創(chuàng)建表成功");
?? ? ? }//執(zhí)行創(chuàng)建表的語(yǔ)句
?? ?
/**
?? ? *插入數(shù)據(jù)
?? ? **/
? ? NSString *insertSql = @"insert into Stu3(name,password) values('hahah','567')";//插入數(shù)據(jù)的字符串
? ? if ( sqlite3_exec(db, [insertSql UTF8String], NULL, NULL, NULL) == SQLITE_OK) {
? ? ? ? NSLog(@"執(zhí)行插入語(yǔ)句成功");
? ? }
?
/**
?? ? *插入多條數(shù)據(jù)
?? ? 用戶名 dsn1-10
?? ? 密碼 六位數(shù)字
?? ? **/
? ? for (int i = 0; i<10; i++) {
? ? ? ? insertSql = [NSString stringWithFormat:@"insert into Stu3(name,password) values('dsn%d','%06d')",i+1,arc4random()%100000];
//? ? ? ? NSLog(@"%@",insertSql);
?? ? ? ?
?? ? ? ?
? ? ? ? if (sqlite3_exec(db, [insertSql UTF8String], NULL, NULL, NULL)==SQLITE_OK) {
? ? ? ? ? ? NSLog(@"插入多條數(shù)據(jù)成功");
? ? ? ? }
?? ? ? ?
? ? }
?
??/**
?? ? *查詢語(yǔ)句
?? ? **/
? ? NSString *selectSql = @"select *from Stu3";
? ? sqlite3_stmt *stmt;//第四個(gè)參數(shù) 返回結(jié)果集
? ? sqlite3_prepare_v2(db, [selectSql UTF8String], -1, &stmt, NULL);//執(zhí)行有返回值的SQL語(yǔ)句
? ? //遍歷結(jié)果集//把結(jié)果集一行行拿出來(lái)//宏表示如果行存在就一直做查詢
? ? while (sqlite3_step(stmt) == SQLITE_ROW) {
? ? ? ? int stu3Id = sqlite3_column_int(stmt, 0);
? ? ? ? char *stu3Name = (char *)sqlite3_column_text(stmt, 1);
? ? ? ? char *stu3PassWord = (char *)sqlite3_column_text(stmt, 2);
?? ? ? ?
? ? ? ? NSLog(@"id=%d,name=%s,password=%s",stu3Id,stu3Name,stu3PassWord);
? ? }
?
結(jié)果:
?
?
插入模型數(shù)據(jù)
//? ? for (int i =0; i<10 ; i++) {
//? ? ? ? NSString *addStr = @"insert into stu(username,userPass) values(?,?)";
//
//? ? ? ? if (sqlite3_prepare_v2(db, [addStr UTF8String], -1, NULL, NULL)==SQLITE_OK) {
//? ? ? ? ? ? sqlite3_bind_text(stmt, 1, [s.stuname UTF8string], -1, NULL);
//
//? ? ? ? ? ? if? (sqlite3_step(stmt)==SQLITE_DONE){
//? ? ? ? ? ? ? ? NSLog(@"插入數(shù)據(jù)成功");
// ? ? ? ? ? ?
//? ? ? ? ? ? }
//? ? ? ? }
//? ? }
?
轉(zhuǎn)載于:https://www.cnblogs.com/adodo/p/5209227.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的iOS学习笔记16-SQLite应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: #pragma execution_ch
- 下一篇: 7.Redis常用命令:ZSet