IOS SQLite文法基礎,iossqlite文法

來源:互聯網
上載者:User

IOS SQLite文法基礎,iossqlite文法

  分享SQLite語句的基礎知識,是很基礎的部分,只涉及"增","刪","改","查"4個文法.不涉及錶鏈接等內容.以後我會更新錶鏈接的隨筆.

  github上有一個SQL的Demo,包含增刪改查. UI: url: --- > https://github.com/huyp/SQLite3_Demo.git

1 #import <sqlite3.h> 2 3 @interface ViewController () 4 5 @property (assign,nonatomic)sqlite3 * database; 6 7 @end 8 9 @implementation ViewController10 11 @synthesize database;

 

  建立一個學生表格,表格中有ID,name,age三個屬性,ID是主鍵.

  建立表格 : create table if not exists t_student (id integer primary key autoincrement, name text, age integer)"

  create table : 建立一個表格.  if not exists : 如果沒有被建立過.  t_student : 表格名字. id integer : ID integer類型(整數). primary key : 主鍵. autoincreament : 自動+1.  name text : name 類型(字串)  age integer類型(整數). 

 1     //把文字框轉換成C語言 2     const char * name = [_text1.text UTF8String];//名字 3     const char * age = [_text2.text UTF8String];//年齡 4     //增加一行語句 5     char * sql = "insert into t_student (name, age) values (?,?)"; 6     /** 7      sqlite 操作位元據需要用一個輔助的資料類型:sqlite3_stmt * 。 8      這個資料類型 記錄了一個“sql語句”。為什麼我把 “sql語句” 用雙引號引起來?因為你可以把 sqlite3_stmt * 所表示的內容看成是 sql語句,但是實際上它不是我們所熟知的sql語句。它是一個已經把sql語句解析了的、用sqlite自已標幟記錄的內部資料結構。 9      */10     sqlite3_stmt * stmt;11     12     //這裡要執行sqlite語句了 (資料庫,SQL語句,-1,&stmt,NULL); 增刪改查都是用這一句代碼13     //不同的地方就是sql語句的不同,sqlite3_bind_text()中的值不同而已.14     int result = sqlite3_prepare_v2(database, sql, -1, &stmt, NULL);15     if (result == SQLITE_OK) {16         sqlite3_bind_text(stmt, 1, name, -1, NULL);17         sqlite3_bind_text(stmt, 2, age, -1, NULL);18     }19     else {20         NSLog(@"準備失敗");21     }22     //檢驗是否操作完成23     if (sqlite3_step(stmt) == SQLITE_DONE) {24         NSLog(@"操作完成");25     }26     else {27         NSLog(@"操作失敗");28     }29     //每次調用sqlite3_prepare 函數sqlite 會重新開闢sqlite3_stmt空間,30     //所以在使用同一個sqlite3_stmt 指標再次調用sqlite3_prepare 前31     //需要調用sqlite3_finalize先釋放空間32     sqlite3_finalize(stmt);

 

  向資料庫中插入對象: insert into t_student (name, age) values (?,?)

  insert into t_student : 向表t_student中插入資料.  (name, age) : 資料名.  values (?,?) : 值(值1,值2).

 1  //把文字框轉換成C語言 2     const char * name = "張三";//名字 3     const char * age = "20";//年齡 4     //增加一行語句 5     char * sql = "insert into t_student (name, age) values (?,?)"; 6     sqlite3_stmt * stmt; 7     int result = sqlite3_prepare_v2(database, sql, -1, &stmt, NULL); 8     if (result == SQLITE_OK) { 9         sqlite3_bind_text(stmt, 1, name, -1, NULL);10         sqlite3_bind_text(stmt, 2, age, -1, NULL);11     }12     else {13         NSLog(@"準備失敗");14     }15     //檢驗是否操作完成16     if (sqlite3_step(stmt) == SQLITE_DONE) {17         NSLog(@"操作完成");18     }19     else {20         NSLog(@"操作失敗");21     }22     //每次調用sqlite3_prepare 函數sqlite 會重新開闢sqlite3_stmt空間,23     //所以在使用同一個sqlite3_stmt 指標再次調用sqlite3_prepare 前24     //需要調用sqlite3_finalize先釋放空間25     sqlite3_finalize(stmt);

 

  刪除資料庫中的對象 : delete from t_student where id = ?

  delete from t_sudent : 刪除t_student表格中的   刪除id = ? 的資料 .

 1     int a = [_text1.text intValue]; 2     sqlite3_stmt * stmt; 3     char * sql = "delete from t_student where id = ?"; 4     int result = sqlite3_prepare_v2(database, sql , -1, &stmt, NULL); 5     if (result == SQLITE_OK) { 6         result = sqlite3_bind_int(stmt, 1, a); 7         if (result == SQLITE_OK) { 8             result = sqlite3_step(stmt); 9             if (result == SQLITE_DONE) {10                 NSLog(@"刪除成功");11             }12             else {13                 NSLog(@"刪除失敗");14             }15         }16     }17     else {18         NSLog(@"刪除失敗");19     }20     21     sqlite3_finalize(stmt);

  

  更改資料 :  update t_student set name = ? where id = ?

  update t_student : 更新表格.  set name = : 設定名字為.  id = 多少的資料.

  就是修改id = ? 的名字.

 1    const char * ID = [_text1.text UTF8String]; 2     const char * newname = [_text2.text UTF8String]; 3     sqlite3_stmt * stmt; 4     char * sql = "update t_student set name = ? where id = ?"; 5     int result = sqlite3_prepare_v2(database, sql , -1, &stmt, NULL); 6     if (result == SQLITE_OK) { 7         result = sqlite3_bind_text(stmt, 1, newname, -1, NULL); 8         result = sqlite3_bind_text(stmt, 2, ID, -1, NULL); 9         if (result != SQLITE_OK) {10             NSLog(@"更新資料有問題");11         }12         if (sqlite3_step(stmt) != SQLITE_DONE) {13             NSLog(@"更新資料不成功");14         }15     }16     else {17         NSLog(@"修改資料失敗");18     }19     sqlite3_finalize(stmt);

 

  查詢資料庫中的所有資料  select id , name , age from t_student

  select : 查詢.   id,name,age  : ID,名字,年齡 這三個屬性.   from t_student : 從t_student這個表格中 

 1 char * sql = "select id , name , age from t_student"; 2     sqlite3_stmt * stmt; 3     int result = sqlite3_prepare_v2(database, sql , -1, &stmt, NULL); 4     if (result == SQLITE_OK) { 5         //sqlite3_step(stmt) == SQLITE_ROW 查詢時使用 6         while (sqlite3_step(stmt) == SQLITE_ROW) { 7             int ID = sqlite3_column_int(stmt, 0); 8             char * name = (char *)sqlite3_column_text(stmt, 1); 9             NSString * strName = [NSString stringWithUTF8String:name];10             int age = sqlite3_column_int(stmt, 2);11             NSLog(@"%d,%@,%d",ID,strName,age);12         }13     }14     sqlite3_finalize(stmt);

 

 

 

  

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.