国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS學習之sqlite的創建數據庫,表,插入查看數據

2019-11-09 14:10:09
字體:
來源:轉載
供稿:網友

目錄(?)[+]

iOS sqlite數據庫操作。步驟是:

先加入sqlite開發庫libsqlite3.dylib,

新建或打開數據庫,

創建數據表,

插入數據,

查詢數據并打印

1、新建項目sqliteDemo,添加使用sqlite的庫libsqlite3.dylib

2、sqlite 的方法

sqlite3          *db, 數據庫句柄,跟文件句柄FILE很類似

sqlite3_stmt      *stmt, 這個相當于ODBC的Command對象,用于保存編譯好的SQL語句sqlite3_open(),   打開數據庫,沒有數據庫時創建。sqlite3_exec(),   執行非查詢的sql語句Sqlite3_step(), 在調用sqlite3_PRepare后,使用這個函數在記錄集中移動。Sqlite3_close(), 關閉數據庫文件還有一系列的函數,用于從記錄集字段中獲取數據,如sqlite3_column_text(), 取text類型的數據。sqlite3_column_blob(),取blob類型的數據sqlite3_column_int(), 取int類型的數據

3、獲取沙盒目錄,并創建或打開數據庫。

viewController.h頭文件添加一個成員變量,并包含頭文件sqlite3.h

[cpp] view plain copy#import <UIKit/UIKit.h>  #import <sqlite3.h>      @interface ViewController : UIViewController  {      sqlite3 *db;  }  @end  

在.m文件 定義宏,方面后面使用

[cpp] view plain copy#define DBNAME    @"personinfo.sqlite"  #define NAME      @"name"  #define AGE       @"age"  #define ADDRESS   @"address"  #define TABLENAME @"PERSONINFO"  

[cpp] view plain copyNSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);   NSString *documents = [paths objectAtIndex:0];   NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];      if (sqlite3_open([database_path UTF8String], &db) != SQLITE_OK) {       sqlite3_close(db);       NSLog(@"數據庫打開失敗");   }  

sqlite3_open,如果數據不存在,則創建。運行。這是在沙盒目錄下能看到數據庫文件(如何打開模擬器沙盒目錄請參考:iOS學習之iOS沙盒(sandbox)機制和文件操作(一))

4、創建數據表

創建一個獨立的執行sql語句的方法,傳入sql語句,就執行sql語句

[cpp] view plain copy-(void)execSql:(NSString *)sql  {      char *err;      if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {          sqlite3_close(db);          NSLog(@"數據庫操作數據失敗!");      }  }  創建數據表PERSONINFO的語句

[cpp] view plain copyNSString *sqlCreateTable = @"CREATE TABLE IF NOT EXISTS PERSONINFO (ID INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, address TEXT)";      [self execSql:sqlCreateTable];  運行程序,數據表創建了。怎么知道數據表創建了呢?我們用火狐的Sqlite Manager插件工具打開數據庫文件看看。可以在火狐瀏覽器里安裝這個插件。打開

四個字段都出現是表中了。

5、插入數據:

[cpp] view plain copyNSString *sql1 = [NSString stringWithFormat:                       @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')",                       TABLENAME, NAME, AGE, ADDRESS, @"張三", @"23", @"西城區"];            NSString *sql2 = [NSString stringWithFormat:                        @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')",                        TABLENAME, NAME, AGE, ADDRESS, @"老六", @"20", @"東城區"];      [self execSql:sql1];      [self execSql:sql2];  運行程序,插入兩條數據,用火狐的sqlite工具查看

6、查詢數據庫并打印數據

[cpp] view plain copyNSString *sqlQuery = @"SELECT * FROM PERSONINFO";     sqlite3_stmt * statement;          if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) {         while (sqlite3_step(statement) == SQLITE_ROW) {             char *name = (char*)sqlite3_column_text(statement, 1);             NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];                          int age = sqlite3_column_int(statement, 2);                          char *address = (char*)sqlite3_column_text(statement, 3);             NSString *nsAddressStr = [[NSString alloc]initWithUTF8String:address];                          NSLog(@"name:%@  age:%d  address:%@",nsNameStr,age, nsAddressStr);         }     }     sqlite3_close(db);  打印結果:

[cpp] view plain copy2012-06-29 13:25:32.205 sqlitDemo[3587:f803] name:張三  age:23  address:西城區  2012-06-29 13:25:32.206 sqlitDemo[3587:f803] name:老六  age:20  address:東城區  最后關閉數據庫。

例子代碼:http://download.csdn.net/detail/totogo2010/4400911


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武定县| 延庆县| 山西省| 西和县| 大渡口区| 祁东县| 武宣县| 罗山县| 永济市| 台湾省| 丰城市| 石嘴山市| 上蔡县| 金塔县| 特克斯县| 千阳县| 安仁县| 平邑县| 江西省| 南昌县| 甘谷县| 平舆县| 冷水江市| 泗洪县| 项城市| 定安县| 台东市| 琼海市| 韶关市| 宜城市| 贵州省| 合江县| 盐亭县| 耒阳市| 璧山县| 花莲市| 深水埗区| 桑日县| 商南县| 定州市| 丹东市|