重温SQLite
Posted 康义的程序员日记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重温SQLite相关的知识,希望对你有一定的参考价值。
以前都一直使用高度封装的FMDB在操作数据库,今天在重新温习一下使用原生SQLite如何对数据库进行操作,以下为原生SQLite3创建的SQLite的工具类。
#import <Foundation/Foundation.h>
@interface SQLiteManager : NSObject
+ (instancetype)shareInstance;
- (BOOL)openDB;
- (BOOL)execSQL:(NSString *)sql;
#import "SQLiteManager.h"
#import <sqlite3.h>
@interface SQLiteManager()
@property (nonatomic,assign)sqlite3 * db;
@end
@implementation SQLiteManager
static id _instance;
+ (instancetype)shareInstance{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [[self alloc] init];
});
return _instance;
}
- (BOOL)openDB
{
// 数据库对象
// sqlite3 *db = nil;
// 数据库文件存放的路径
NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
filePath = [filePath stringByAppendingPathComponent:@"demo.sqlite"];
// 打开一个数据库文件:如果存在则直接打开,如果不存在,先创建在打开
// 1> 参数一:文件路径+文件名字
// 2> 参数二:数据库对象
if (sqlite3_open(filePath.UTF8String, &_db) != SQLITE_OK) {
NSLog(@"数据库打开失败");
return NO;
}
// 创建表
return [self createTable];
}
- (BOOL)createTable{
// 1.封装创建表的语句
NSString *createTableSQL = @"CREATE TABLE IF NOT EXISTS 't_student' ( 'id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,'name' TEXT,'age' INTEGER);";
// 2.执行sql语句
return [self execSQL:createTableSQL];
}
- (BOOL)execSQL:(NSString *)sql
{
// 1> 参数一:数据库对象
// 2> 参数二:要执行的sql语句
return sqlite3_exec(self.db, sql.UTF8String, nil, nil, nil) == SQLITE_OK;
}
- (void)updateData{
// 1.封装更新数据的SQL语句
NSString * updateSQL = @"UPDATE t_student SET name = 'zs10' WHERE age > 22";
// 2.执行更新语句
BOOL flag = [[SQLiteManager shareInstance] execSQL:updateSQL];
if(flag){
NSLog(@"更新成功");
}
}
@end
以上是关于重温SQLite的主要内容,如果未能解决你的问题,请参考以下文章
java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常(代码片段
SQLite 片段函数实现不会在 TextView 中将文本格式化为 HTML
当我从用户获取数据并将其保存到 SQLite 数据库中时,我应该怎么做才能使列表视图在片段中工作
Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段