iOS开发能用mysql吗_iOS开发之数据库的简单使用
數據庫基礎知識:
plist:writetoFile,條件:只有一個對象擁有這個方法,才能使用plist存儲,而且自定義對象不能用plist存儲
Preference:偏好設置存儲:NSUserDefault存儲,好處:不需要關心文件名,快速存儲,底層:就是用一個字典做存儲.壞處:在iOS8之前,都必須做一下同步操作,目的讓內存和硬盤同步.
NSCoding(NSKeyedArchiver\NSkeyedUnarchiver):用來自定義對象歸檔,自定義對象需要歸檔:遵守NSCoding協議,并且實現對應的方法,告訴系統哪些屬性需要歸檔,哪些屬性需要解檔
SQLite3:好處:1.精確的讀取數據2.快速的查詢到自己想要的數據3.可以批量的讀取數據(可以只讀出一部分數據)
利用場合:1.用來做離線緩存(只讀出需要展示數據,可以節省流量)
本地存儲:都是以文件形式存儲.
數據庫:是以文件的形式存在
數據庫第一步:創建數據庫文件
第二步:創建表 -> 定義一個模型類
第三步:設計字段(這個表里面有哪些屬性) -> 設計模型屬性(主要是看你想存儲哪些屬性)
注意:一定需要一個主鍵,每條記錄的唯一標識,自動增長
第四步:添加記錄(設置每個屬性的值) -> 創建模型,并且給模型賦值
1.創建數據庫鏈接,就等于創建數據庫文件
sql語句
DDL語句:創建表格和刪除表格
1.創建表格 create table if not exists 表名(字段名 字段類型,...);
create table t_student (id integer primary key,name text,age integer);
判斷下有沒有這個表格
create table if not exists t_student (id integer primary key,name text,age integer);
2.刪除表格 drop table if exists 表名;
drop table if exists t_student;
DML:增,刪,改:操作的是記錄
增 insert into 表名 (字段,...) values(字段值);
如果是字段是字符串類型,必須要用單引號(')擴住
insert into t_student (name,age) values ('a',10);
改 update 表名 set 字段 = 字段值,....
update t_student set name = 'c',age = 18;
刪:會把t_student表里面的所有記錄全部刪掉
delete from t_student;
刪 delete from 表名;把表里面的所有記錄全部刪除.
3. 條件語句
update t_student set age = 9 where age =1 and name = '左澤';
4.查詢語句(DQL) select 字段 from 表名;
select s.name t_name from t_student s where age = 1 and name = '小澤';
模糊查詢
%:代表所有的值
%3:前面無論是什么值,只要以3結尾就OK
3%:后面無論是什么值,只要以3就Ok
%3%:無論前面后面是什么,可以有值也可以沒有值,只要有3就行
113:
第一步:創建數據庫文件
1、導入sqlite3框架
2、導入頭文件
3、創建數據庫文件
1 NSString *docPatch = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES)[0];2 NSString *filePatch = [docPatch stringByAppendingPathComponent:@"student.splite"];3 /**4 * 打開數據庫5 *6 * @param filename7 * @param ppDb8 *9 * @return 是否打開成功,只要打開成功,就會自動創建數據庫文件,文件名就是filename,還有會給數據庫實例賦值10 */
11 //sqlite3_open(, )12 //把OC中字符串轉換成c語言字符串 -> NSUTF8String
13 sqlite3 *db;14 if (sqlite3_open(filePatch.UTF8String, &db)) {15 NSLog(@"打開成功");16 }else{17 NSLog(@"打開失敗");18 }
二、創建表格語句
1 //創建表格
2 /**3 * 執行數據庫語句4 *5 * @param sqlite3 數據庫實例6 * @param sql sql語句7 * @param callback 執行完成的回調8 void * 回調的第一個參數9 errmsg 錯誤信息10 *11 * @return 如果執行成功會返回12 */
13 //sqlite3_exec(sqlite3 *, const char *sql, int (*callback)(void *, int, char **, char **), void *, char **errmsg);
14 char *errmsg;15 NSString *sql = @"crate table if not exists t_student (id integer primary key, name text not null);";16 //創建表格
17
18 sqlite3 *db;
sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);19 if(errmsg){20 NSLog(@"創建表格失敗");21 } else{22 NSLog(@"創建表格成功");23 }
三、增-插入(增加)數據的語句
char *errmsg;
NSString*sql = [NSString stringWithFormat:@"insert into t_student (name) values('abc');"];//創建表格
sqlite3 *db;
sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);if(errmsg) {
NSLog(@"插入失敗");
}else{
NSLog(@"插入成功");
}
四、刪-刪除表格語句
char *errmsg;
NSString*sql = [NSString stringWithFormat:@"delete from t_student;"];//創建表格
sqlite3 *db; sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);if(errmsg) {
NSLog(@"刪除失敗");
}else{
NSLog(@"刪除成功");
}
五、改-改掉表格中某個字段的語句
char *errmsg;
NSString*sql = [NSString stringWithFormat: @"update t_student set name = 'b';"];//創建表格
sqlite3 *db;
sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);if(errmsg) {
NSLog(@"更新失敗");
}else{
NSLog(@"更新成功");
}
六、 查- 查找數據的語句
查詢跟增刪改不一樣,查詢之前得先有一個準備,先看下查詢語句的C語言函數
1 //查詢跟增刪改不一樣2
3 //1.讓數據準備一下
4 /**5 *6 *7 * db:數據實例8 * zSql:查詢的準備語句9 int nByte 查詢語句的字節 -1->就會自動計算字節10 ppStmt:句柄:操作數據庫里面的記錄11 返回值 準備成功就返回 SQLITE_OK , 失敗返回 SQLITE_FAIL
12 */
13 sqlite3_prepare_v2(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail)
查詢語句代碼實例
1 sqlite3_stmt *stmt;2 sqlite3 *db;3 NSString *sql = [NSString stringWithFormat:@"select * from t_student;"];4 if (sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, NULL) ==SQLITE_OK) {5 NSLog(@"準備成功");6 //執行句柄,去尋找下一條記錄
7 while (sqlite3_step(stmt) ==SQLITE_ROW) {8 NSLog(@"找到數據");9 //獲取哪一列的數據
10 const unsigned char *name = sqlite3_column_text(stmt, 1);11 Student *s =[[Student alloc] init];12 s.name = [NSString stringWithUTF8String:(const char *)name];13 [arrM addObject:s];14 }15
16
17 }
總結
以上是生活随笔為你收集整理的iOS开发能用mysql吗_iOS开发之数据库的简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MYSQL的地理信息数据库_国内为什么没
- 下一篇: mysql 唯一索引 性能_普通索引和唯