SQlite3(轻型数据库)

这里写图片描述

1. main.m文件

#import <Foundation/Foundation.h>
#import "SQLManger.h"int main(int argc, const char * argv[]) {@autoreleasepool {// insert code here...NSLog(@"Hello, World!");SQLManger* sql = [SQLManger shareSqlManger];[sql createTable];//查[sql selectMessage];//增
//        [sql IncreaseMessage];//删
//        [sql DeleteMessage];  //改[sql changeMessage];}return 0;
}

2. SQLManger.h 文件

#import <Foundation/Foundation.h>
#import <sqlite3.h>@interface SQLManger : NSObject
{sqlite3* db;//声明数据库对象
}//类方法单例创建实例对象的方法
+(SQLManger*)shareSqlManger;
//创建数据表
-(void)createTable;
//查询数据表数据
-(void)selectMessage;
//增加数据表数据
-(void)IncreaseMessage;
//删除数据表数据
-(void)DeleteMessage;
//改变数据表数据
-(void)changeMessage;
@end

3. SQLManger.m 文件

#import "SQLManger.h"//声明一个全局的静态变量,来记录SQLManger对象是否被创建(定义一个静态区指针 连接数据库 让数据库再程序结束后自动释放)
static SQLManger* sqlManger = nil;@implementation SQLManger//类方法单例创建实例对象的方法
+(SQLManger*)shareSqlManger
{if (sqlManger == nil) {sqlManger = [[SQLManger alloc]init];}return sqlManger;
}//创建数据表
-(void)createTable
{
//    //获取文件的相对路径
//    NSString* path = [[NSBundle mainBundle]pathForResource:@"nibaba" ofType:@"sqkute"];
//    //读取plist文件的内容
//    NSArray* arr = [NSArray arrayWithContentsOfFile:path];
//    NSLog(@"arr == %@", arr);//    //获取家目录
//    NSString* homePath = NSHomeDirectory();
//    NSLog(@"家目录:%@",homePath);
//    //获取Documents路经
//    NSArray* pathArr1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//    NSString* docuPath = [pathArr1 objectAtIndex:0];
//    NSLog(@"Documents路径:%@",docuPath);
//    NSString* path = [docuPath stringByAppendingPathComponent:docuPath];
//    NSLog(@"path == %@", path);
//    //这个只限于IOS应用在mac应用中就不适应//    //获取数据库路径
//    NSString* path = @"/Users/user/Downloads/数据库";
//    //文件管理器
//    NSFileManager* fileManager = [NSFileManager defaultManager];
//    //判断数据库是否存在
//    BOOL fild = [fileManager fileExistsAtPath:path];
//    
//    如果数据库存在,则用sqlite3_open直接打开(不要担心,如果数据库不存在sqlite3_open会自动创建)
//    if (fild) {
//        NSLog(@"文件库存在。。。。");
//    }else{
//        NSLog(@"文件库不存在。。。");
//    }//获取数据库路径NSString* path = @"/Users/user/Downloads/数据库/nibaba.sqlite";//打开数据库//第一个参数是数据库的路径,c的字符串类型//第二个参数是数据库的对象//SQLITE_OK 是宏定义代表语句操作成功if (sqlite3_open([path UTF8String], &db) == SQLITE_OK) {//NSString* createTable = @"CREATE TABLE IF NOT EXISTS STUDENT (sid text primary key,name text)";NSString* createTable=@"CREATE TABLE IF NOT EXISTS STUDENG  (SID TEXT PRIMARY KEY,NAME TEXT);";//执行创建表的aql语句//第一个参数是数据库的对象//第二个参数是sql语句,c的字符串类型//第三个参数是回调方法//第四个参数是回调方法的参数//第五个参数是错误信char* error;//sqlite3_exec 打开数据库时,如果存在数据库就打开,如果不存在就会创建并打开if (sqlite3_exec(db, [createTable UTF8String], nil, nil, &error) == SQLITE_OK) {NSAssert(YES, @"数据表格创建成功%s", error);NSLog(@"数据表格创建成功");}else{NSAssert(NO, @"数据表格创建失败%s", error);NSLog(@"数据表格创建失败");}//关闭数据库sqlite3_close(db);}}//查询数据表数据
-(void)selectMessage
{//获取数据库路径NSString* path = @"/Users/user/Downloads/数据库/nibaba.sqlite";//打开数据库if(sqlite3_open([path UTF8String], &db) == SQLITE_OK){//? 是占位符NSString* selectSql = @"select *from areaCode where id=?";//创建语句对象sqlite3_stmt* stmt;//执行sql语句的预处理//第一个参数是数据库对象//第二个参数是执行的sql语句//第三个参数是语句的执行长度,-1代表全部执行//第四个参数是语句对象//第五个参数是没有执行的部分,一般会全部执行,一般填nilsqlite3_prepare_v2(db, [selectSql UTF8String], -1, &stmt, NULL);//绑定参数,并实现查找//第一个参数是语句对象//第二个参数是语句编号,从1开始//第三个参数是所要绑定参数的值sqlite3_bind_int(stmt, 1, 10);//获取查询出来的值if (sqlite3_step(stmt) == SQLITE_ROW) {//获取一行数据有多少列NSLog(@" ====== %d", sqlite3_column_count(stmt));char* s = (char*)sqlite3_column_text(stmt, 1);NSLog(@" ------ %@",[NSString stringWithFormat:@"%s", s]);//获取ID的值NSLog(@"------%d",sqlite3_column_int(stmt, 0));sqlite3_finalize(stmt);//释放语句}else{sqlite3_finalize(stmt);//释放语句sqlite3_close(db);}}else{sqlite3_close(db);}
}//增加数据表数据
-(void)IncreaseMessage
{//获取数据库路径NSString* path = @"/Users/user/Downloads/数据库/nibaba.sqlite";//打开数据库if(sqlite3_open([path UTF8String], &db) == SQLITE_OK){NSString *increase = @"insert into areaCode(id,location,countryCodeID) values (1,'镇魂街',02)";char* error;//sqlite3_exec 打开数据库时,如果存在数据库就打开,如果不存在就会创建并打开if (sqlite3_exec(db, [increase UTF8String], nil, nil, &error) == SQLITE_OK) {NSLog(@"增加数据表数据成功");}else{NSLog(@"增加数据表数据失败 == %s", error);}}
}//删除数据表数据
-(void)DeleteMessage
{//获取数据库路径NSString* path = @"/Users/user/Downloads/数据库/nibaba.sqlite";//打开数据库if(sqlite3_open([path UTF8String], &db) == SQLITE_OK){//删除id为1的一行数据,如果要删两行就 id = 1 or id = 10 ,删除id为1和10行的数据NSString *Delete = @"delete from areaCode  where id = 1";char* error;//sqlite3_exec 打开数据库时,如果存在数据库就打开,如果不存在就会创建并打开if (sqlite3_exec(db, [Delete UTF8String], nil, nil, &error) == SQLITE_OK) {NSLog(@"删除数据表数据成功");}else{NSLog(@"删除数据表数据失败 == %s", error);}}
}//改变数据表数据
-(void)changeMessage
{//获取数据库路径NSString* path = @"/Users/user/Downloads/数据库/nibaba.sqlite";//打开数据库if(sqlite3_open([path UTF8String], &db) == SQLITE_OK){NSString *change = @"update areaCode set location = '镇魂街' WHERE id = 1";char* error;//sqlite3_exec 打开数据库时,如果存在数据库就打开,如果不存在就会创建并打开if (sqlite3_exec(db, [change UTF8String], nil, nil, &error) == SQLITE_OK) {NSLog(@"改变数据表数据成功");}else{NSLog(@"改变数据表数据失败 == %s", error);}}
}@end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8735.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我和ChatGPT聊了聊:它承认自己没有人性

我认为ChatGPT未来也许可以取代那些 重复 可以模板 固定公式 运作的工作 但是很难取代 定制化 人性化的工作 最近ChatGPT太火了&#xff0c;已经从好几个不同的渠道接触到了它&#xff0c;自然是整了一个去玩玩&#xff0c;零零散散问了它一些问题&#xff0c;答案还挺有意思的…

有了ChatGPT,还需要操作系统吗?|CCF C³

杨净 发自 凹非寺量子位 | 公众号 QbitAI 大模型引领的AI 2.0&#xff0c;远比想象来得更加猛烈。 尤其是被认为最先被颠覆的搜索引擎领域&#xff0c;产学研界都蠢蠢欲动&#xff0c;对可预见的趋势展开激辩。 没有了用户点击&#xff0c;内容提供商/广告该怎么办&#xff1f;…

震惊!外国小哥用ChatGPT完成80%工作,同时打4份工

【导读】自从ChatGPT火了以后&#xff0c;办公室白领可真是爽翻了。甭管什么任务&#xff0c;交给ChatGPT&#xff0c;准没错。 不少白领在工作中都用上了ChatGPT&#xff0c;堪称如虎添翼。 毕竟&#xff0c;很多工作都是重复的、有章可循的。 既然有了科技力量的加持&#xf…

ChatGPT会对未来5年的NLP算法从业者带来怎样的冲击?

周末看到知乎的一个问题&#xff0c;有点意思&#xff0c;值得NLPer思考&#xff0c;选取几个回答&#xff0c;欢迎留言。 问题&#xff1a;ChatGPT的诞生意味着模型大一统的可行性&#xff0c;这会对未来5年的NLP算法从业者带来怎样的冲击&#xff1f; 我个人从ChatGPT上看到了…

OpenAI 账户验证流程存在漏洞,可导致用户无限薅羊毛

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01; 编译&#xff1a;代码卫士 Checkmarx 公司指出&#xff0c;OpenAI 的账户验证流程中存在一个漏洞&#xff0c;可导致任何人使用同一个电话号码注册新账户后&#xff0c;获得无限制的服务额度。 作为人工智能公司&…

赚翻了!外国小哥用ChatGPT完成80%工作,同时打4份工

Datawhale分享 最新&#xff1a;ChatGPT应用&#xff0c;编辑&#xff1a;新智元 【导读】自从ChatGPT火了以后&#xff0c;办公室白领可真是爽翻了。甭管什么任务&#xff0c;交给ChatGPT&#xff0c;准没错。 不少白领在工作中都用上了ChatGPT&#xff0c;堪称如虎添翼。 毕…

ShardingJDBC读写分离

ShardingJDBC是什么 看一看ChatGPT对他的解释&#xff1a; ShardingJDBC是一个数据库连接池&#xff0c;它为数据库的分片和读/写拆分提供支持。它允许您跨多个物理数据库和服务器分发数据&#xff0c;并根据设置的配置将读写操作路由到适当的数据库。 以下是它的工作原理&…

为什么总是闹离职的员工没走,平时不吭声的员工却突然离职?

上一篇&#xff1a;华为“天才少年”稚晖君被曝离职&#xff01;两年前加入年薪百万起步的天才少年计划&#xff01; 相信工作过几年的朋友都遇到过类似的现象&#xff1a;总是闹离职的员工没走&#xff0c;平时不吭声的员工却突然离职。 其实很正常&#xff0c;总是闹离职的说…

盘点海外 AIGC 独角兽创始人,中国何时迎来自己的高光时刻?

据不完全统计&#xff0c;全球 AIGC 创业公司中估值在 10 亿美元以上的已经多达 10 家。包括推出 ChatGPT 的 OpenAI&#xff0c;因《太空歌剧院》而走红的 Midjourney 等。这些独角兽背后的创业者都是谁&#xff1f;他们又是如何成为时代的开创者&#xff1f;本篇文章带你一看…

适合程序员使用的 ChatGPT!!!

ChatGPT 不仅能解决亲情&#xff0c;友情&#xff0c;爱情等非常热门的问题&#xff0c;还能帮助程序员在开发中反复测试自己的代码或者切磋技艺。 例如&#xff0c;作为程序员的我们&#xff0c;只要在ChatGPT上轻轻松松地输出我们的需求&#xff0c;“null pointer怎么解决啊…

1 分钟高效集成 ChatGPT,Stable Diffusion 等 AIGC 模型最强教程

1 分钟能做什么&#xff1f;集成 ChatGPT 到自己的公众号&#xff0c;小程序或者 APP&#xff1f;集成各种形式的 Stable Diffusion&#xff0c;让 AIGC 帮助自己的项目更有趣&#xff0c;更生动&#xff1f;本教程将会教大家如何 1 分钟高效集成 ChatGPT&#xff0c;Stable Di…

【起飞】让你电脑速度快到飞起的一些牛逼的设置整理【电脑卡顿反应慢等问题解决】

对于开发来说电脑的反应速度简直影响了思维的速度&#xff0c;要让电脑速度跟上我们的思维&#xff0c;提高工作效率&#xff0c;早点打卡下班回家陪老婆孩子哈哈 这篇文章主要对windows系统做的一些优化&#xff0c;是真的好用&#xff0c;仿佛在访问静态页面一样&#xff0c;…

【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

背景&#xff1a; 之前用过芝麻IP&#xff0c;写过这几篇文章 《【Python】芝麻HTTP代理系列保姆级全套攻略(对接教程自动领取每日IPIP最优算法)》 《【Python】记录抓包分析自动领取芝麻HTTP每日免费IP&#xff08;成品教程&#xff09;》 《爬虫增加代理池&#xff1a;使用稳…

高通410 随身WIFI刷入Debian系统(玩法合集)

引言 刚接触到这个项目是在b站上&#xff0c;刷到一位UP主的视频&#xff1a;https://b23.tv/xAFWiTF 其实现了在搭载高通410芯片的随身WIFI烧录linux系统&#xff0c;并在上面部署了chatGPT-Next网站服务。 本人参考的教程链接和其教程所有工具&#xff1a;https://pan.bai…

chatgpt赋能python:Python如何薅羊毛?

Python如何薅羊毛&#xff1f; 近年来&#xff0c;Python已经成为了越来越多程序员的首选编程语言。除了在技术领域得到广泛应用&#xff0c;Python还可以被用于一些非正当途径&#xff0c;比如薅羊毛。在这篇文章中&#xff0c;我们将会学习如何利用Python来薅羊毛。 什么是…

【ChatGPT】GPT实现原理大解析——看完就知道什么叫颠覆

文章目录 前言一、ChatGPT是什么&#xff1f;二、那么&#xff0c;如何计算下一个单词的概率&#xff1f;三&#xff0c; 什么是模型&#xff1f;四&#xff0c;如何制作能完成人类任务的模型五&#xff0c;神经网络总结 前言 ChatGPT 能够自动生成类似于人类写作的文本&#…

多平台发布文章怎么做?自媒体多平台发内容教程分享

目前很多小伙伴着手做自媒体全部都是在一些自媒体视频或是时尚博主的推荐下才了解到做自媒体可以为自己创造收入&#xff0c;刚开始做得时候或许只是会弄两三个账户&#xff0c;察觉收入也并不高&#xff0c;便不愿意去做相应的事情了&#xff0c;确实目前做自媒体的人太多了&a…

自媒体文章同步该怎么做?有什么办法可以一键同步到多自媒体平台

在自媒体行业当中&#xff0c;有很多人的苦恼就是应该如何将自己的创作内容同时发布在各大媒体上&#xff0c;应该进行什么样的步骤才能够进行同步。那我们需要在各大平台进行授权&#xff0c;才能够进行同时发布&#xff0c;不仅非常的繁琐&#xff0c;而且在管理账户方面更容…

自媒体一篇文章能多平台发布吗?

如今是全民自媒体时代&#xff0c;只要热爱创作&#xff0c;并且懂得网络知识的人们&#xff0c;就可以成为自媒体人&#xff0c;自媒体这个行业存在竞争&#xff0c;能否在竞争中脱引而出&#xff0c;能否利用自媒体平台赚钱&#xff0c;与个人眼光、写作水平以及所用工具存在…

头条发布文章如何一篇文章发布道30+自媒体平台?

很多从事自媒体工作的朋友都会借助工具来帮助自己工作&#xff0c;这种工具能批量发布30多个平台的工具&#xff0c;很多人都应该听说过头条号&#xff0c;也是一个著名的自媒体平台。许多作者已经在使用了&#xff0c;收入相当可观。许多自媒体工作室经营多个账号&#xff0c;…