創建表:
create table 表名稱(字段1,字段2,……,字段n,[表級約束])[TYPE=表類型];
插入記錄:
insert into 表名(字段1,……,字段n) values (值1,……,值n);
刪除記錄:
delete from 表名 where 條件表達式;
修改記錄:
update 表名 set 字段名1=值1,……,字段名n=值n where 條件表達式;
查看記錄:
select 字段1,……,字段n from 表名 where 條件表達式;
1,打開數據庫
使用的C語言函數如下:
/* 打開數據庫 */
int sqlite3_open(
const char *filename, /* 數據庫路徑(UTF-8) */
sqlite3 **pDb /* 返回的數據庫句柄 */
);
2,查詢數據庫
使用的C語言函數:
/* 執行有返回結果的SQL語句 */
int sqlite3_prepare_v2(
sqlite3 *db, /* 數據庫句柄 */
const char *zSql, /* SQL語句(UTF-8) */
int nByte, /* SQL語句最大長度,-1表示SQL支持的最大長度 */
sqlite3_stmt **ppStmt, /* 返回的查詢結果 */
const char **pzTail /* 返回的失敗信息*/
);
3,插入數據
使用的C語言函數:
/* 執行有返回結果的SQL語句 */
int sqlite3_prepare(
sqlite3 *db, /* 數據庫句柄 */
const char *zSql, /* SQL語句(UTF-8) */
int nByte, /* SQL語句最大長度,-1表示SQL支持的最大長度 */
sqlite3_stmt **ppStmt, /* 返回的查詢結果 */
const char **pzTail /* 返回的失敗信息*/
);
4.刪除數據庫
使用的C語言函數:
/* 執行沒有返回的SQL語句 */
int sqlite3_exec(
sqlite3 *db, /* 數據庫句柄 */
const char *sql, /* SQL語句(UTF-8) */
int (*callback)(void*,int,char**,char**), /* 回調的C函數指針 */
void *arg, /* 回調函數的第一個參數 */
char **errmsg /* 返回的錯誤信息 */
);
5, 關閉數據庫
使用的C語言函數:
/* 關閉數據庫 */
int sqlite3_close(sqlite3 *db);
下面來個小例子:
這裡請求數據是微博的用戶名和id 定義一個模型
DataModel.h
#import
@interface DataModel : NSObject
@property (nonatomic, copy) NSString *screen_name;
@property (nonatomic, copy) NSString *avatar_hd;
- (instancetype)initWithDictionary:(NSArray *)dictionary;
@end
DataModel.m
#import "DataModel.h"
@implementation DataModel
- (instancetype)initWithDictionary:(NSDictionary *)dictionary {
if (self = [super init]) {
// 當有很多屬性 一個一個的寫 太麻煩了,
// 一句話搞定
[self setValuesForKeysWithDictionary:dictionary];
}
return self;
}
// 一般情況下 請求數據回來,裡面包含很多數據,要一個一個的寫,寫錯了一個就報錯
// 請求數據回來有很多,但你又用不上,就寫上這個方法
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
// 打印的是 你沒用到的key
NSLog(@"%@",key);
}
@end
在定義一個處理數據庫的類 DataBase
DataBase.h
#import
/** 導入DataModel*/
#import "DataModel.h"
@interface DataBase : NSObject
/** 打開數據庫*/
+ (void)openDB;
/** 查*/
+ (NSArray *)find;
/** 插*/
+ (BOOL)insertModel:(DataModel *)dataModel;
+
/** 刪除*/
+ (BOOL)deleteModel:(DataModel *)dataModel;
@end
DataBase.m
#import "DataBase.h"
// 導入
#import
@implementation DataBase
// 創建一個數據庫對象
static sqlite3 *db;
#pragma mark - 打開數據庫
+ (void)openDB {
// 將導入的數據庫移動到 Documents 文件夾下
// 首先要在外面創建一個數據庫 把數據庫導入工程裡面 "這一步 一定要做"
// 拿到數據庫的路徑
// 這裡 WeiBo 是創建數據庫的名稱 (千萬不要搞錯)
NSString *originPath = [[NSBundle mainBundle] pathForResource:@"WeiBo" ofType:@"sqlite"];
// Documents 文件夾下的路徑 然後進行拼接
NSString *targetPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"collection.sqlite"];
NSFileManager *manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:targetPath]) {
[manager moveItemAtPath:originPath toPath:targetPath error:nil];
}
char *filename = (char *)[targetPath UTF8String];
// 打開數據庫
int result = sqlite3_open(filename, &db);
if (result == SQLITE_OK) {
NSLog(@"數據庫開啟成功");
} else {
NSLog(@"數據庫開啟失敗");
}
}
#pragma mark - 查
+ (NSArray *)find {
NSMutableArray *mArray = [NSMutableArray array];
// 打開數據庫
[self openDB];
// 聲明一個陳述
sqlite3_stmt *stmt = nil;
// 查表
// 這裡 weiBo 是創建數據庫下的表名稱 (千萬不要搞錯)
const char *sql = "select *from weiBo";
// 將sql 文本轉成一個 語句對象
int result = sqlite3_prepare_v2(db, sql, -1, &stmt, nil);
if (result == SQLITE_OK) {
NSLog(@"准備查詢成功");
while (sqlite3_step(stmt) == SQLITE_ROW) {
// 提取數據
const char *screen_name = (const char *)sqlite3_column_text(stmt, 0);
const char *avatar_hd = (const char *)sqlite3_column_text(stmt, 1);
DataModel *dataModel = [[DataModel alloc] init];
dataModel.screen_name = [NSString stringWithCString:screen_name encoding:4];
dataModel.avatar_hd = [NSString stringWithCString:avatar_hd encoding:4];
//"NSNumber 類型 " [NSNumber numberWithInteger:[[NSString stringWithCString:deal_id encoding:4] integerValue]];
[mArray addObject:dataModel];
}
}
return mArray;
}
#pragma mark - 插
+ (BOOL)insertModel:(DataModel *)dataModel {
// 打開數據庫
[self openDB];
sqlite3_stmt *stmt = nil;
// 這裡 weiBo 是創建數據庫下的表名稱 (千萬不要搞錯)
const char *sql = "insert into weiBo(screen_name, avatar_hd) values(?, ?)";
// 將 sql 文本轉換成一個 語句對象
int result = sqlite3_prepare(db, sql, -1, &stmt, nil);
if (result == SQLITE_OK) {
//將要插入的數據插入到數據庫
sqlite3_bind_text(stmt, 1, [dataModel.screen_name UTF8String], -1, nil);
sqlite3_bind_text(stmt, 2, [dataModel.avatar_hd UTF8String], -1, nil);
//[NSNumber] sqlite3_bind_text(stmt, 1, [[NSString stringWithFormat:@"%@",model.comment_num] UTF8String], -1, nil);
if (sqlite3_step(stmt) == SQLITE_DONE) {
flag = YES;
}
}
return flag;
}
#pragma mark - 刪
+ (BOOL)deleteModel:(DataModel *)dataModel {
BOOL flag = NO;
// 打開數據庫
[self openDB];
// 這裡 weiBo 是創建數據庫下的表名稱 (千萬不要搞錯)
NSString *sql = [NSString stringWithFormat:@"delete from weiBo where screen_name = %@", dataModel.screen_name];
int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, nil);
if (result == SQLITE_OK) {
NSLog(@"刪除成功");
flag = YES;
} else {
NSLog(@"刪除失敗");
}
return flag;
}
@end
(用火狐浏覽器)
1,SQLite Manager下載
2,創建數據庫有幾種方法(這理就不一一介紹了) 我的是火狐浏覽器裡面的數據庫
打開浏覽器 –> 工具 –> 找到SQLite Manager
3,點擊:SQLite Manager 頁面是這樣
4,創建數據庫
5,桌面 把它拖到工程中
6,創建數據庫的表(表裡面創建字段 可以理解為屬性)
7,表創建成功後