數據庫的數據添加和查詢

  1. /*= = = - - - = = = 
  2.      sqlite3 數據庫裏添加數據 
  3.      = = = - - - = = = */  
  4.       
  5.     //1.定義一個sqlite3的指針  
  6.     sqlite3 *db;  
  7.     //2.用來接收讀寫數據庫操作是否成功的返回值  
  8.     int dbrc;  
  9.     //3.轉換數據庫路徑爲UTF8的c風格字符串  
  10.     const char* dbFilePathUTF8 = [dbFilePath UTF8String];  
  11.     //4.打開數據庫  
  12.     dbrc = sqlite3_open(dbFilePathUTF8, &db);  
  13.     //判斷是否成功打開  
  14.     if (dbrc == SQLITE_OK) {  
  15.         NSLog(@"成功打開了數據庫");  
  16.     }  
  17.     //5.定義執行sql語句的指針  
  18.     sqlite3_stmt *dbps;  
  19.     //6.定義sql語句  
  20.     NSString *insertStatementNS = [NSString stringWithFormat:  
  21.                                    @"insert into \"shopping\"\  
  22.                                    (item, price, groupid, dateadd)\  
  23.                                    values (\"%@\", %@, %d, DATETIME('NOW'))",  
  24.                                    @"lll",  
  25.                                    @"350",  
  26.                                    2];  
  27.     //7.將定義的NSString的sql語句,轉換成UTF8的c風格的字符串  
  28.     const char *insertStatement = [insertStatementNS UTF8String];  
  29.       
  30.       
  31.     //8.sql語句的預執行。(判斷sql語句是否符合語法)      
  32.     dbrc = sqlite3_prepare_v2   
  33.     (db, insertStatement, -1, &dbps, NULL);  
  34.       
  35.     //9.執行sql語句  
  36.     dbrc = sqlite3_step (dbps);  
  37.       
  38.     NSLog(@"dbrc = %d",dbrc);  
  39.       
  40.       
  41.       
  42.       
  43.     /*= = = - - - = = = 
  44.      數據庫裏讀取數據 
  45.      = = = - - - = = =*/  
  46.       
  47.     //1.定義一個查詢語句      
  48.     NSString *queryStatementNS =  
  49.     @"select key,item,price,groupid,dateadd from shopping";  
  50.       
  51.     //2.將定義的NSString的查詢語句轉換成UTF8的c字符串      
  52.     const char *queryStatement = [queryStatementNS UTF8String];  
  53.       
  54.     //3.sql語句的預處理      
  55.     dbrc = sqlite3_prepare_v2 (db, queryStatement, -1, &dbps, NULL);  
  56.     NSLog (@"prepared statement=%d",dbrc);  
  57.       
  58.     //4.獲取值,要用相匹配的方法去獲取相應類型的值,並要轉換類型  
  59.     while ((dbrc = sqlite3_step (dbps)) == SQLITE_ROW)  
  60.     {  
  61.          
  62.         //獲取主健的值 int型的 用 sqlite3_column_int  
  63.         int primaryKeyValueI = sqlite3_column_int(dbps, 0);  
  64.         //轉換成 NSNumber 類型的  
  65.         NSNumber *primaryKeyValue = [[NSNumber alloc]  
  66.                                      initWithInt: primaryKeyValueI];  
  67.           
  68.         NSLog(@"primaryKeyValue = %@",primaryKeyValue);  
  69.           
  70.         //獲取item的值 字符串用 sqlite3_column_text    
  71.         NSString *itemValue = [[NSString alloc]  
  72.                                initWithUTF8String: (char*) sqlite3_column_text (dbps, 1)];  
  73.           
  74.         NSLog(@"itemValue = %@",itemValue);  
  75.           
  76.         //獲取price的值  double類型用 sqlite3_column_double  
  77.         double priceValueD = sqlite3_column_double (dbps, 2);  
  78.           
  79.         NSLog(@"priceValueD = %lf",priceValueD);  
  80.         //轉換類型  
  81.         NSNumber *priceValue = [[NSNumber alloc]  
  82.                                 initWithDouble: priceValueD];  
  83.           
  84.         NSLog(@"priceValue =  %@",priceValue);  
  85.           
  86.         //獲取guoupid的值  
  87.         int groupValueI = sqlite3_column_int(dbps, 3);  
  88.           
  89.         NSLog(@"groupValueI =  %d",groupValueI);  
  90.           
  91.         NSNumber *groupValue = [[NSNumber alloc]  
  92.                                 initWithInt: groupValueI];  
  93.           
  94.         NSLog(@"groupValue =  %@",groupValue);  
  95.           
  96.         //獲取dateadd的值  
  97.         NSString *dateValueS = [[NSString alloc]   
  98.                                 initWithUTF8String:(char*)sqlite3_column_text (dbps, 4)];  
  99.           
  100.         NSLog(@"dateValueS =  %@",dateValueS);  
  101.                   
  102.     }      
  103.       
  104.     //10.釋放資源  
  105.     sqlite3_finalize (dbps);  
  106.       
  107.     //11.關閉數據庫      
  108.     sqlite3_close(db);  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章