iOS sqlite 的各种操作
2024-08-22 16:08:04
iOS对于数据库的操作:增加、删除、查找、修改
首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库
火狐找查找SQLite Manager的步骤:
第一步:在工具栏找到附加组件,点击进入
第二步:搜索 SQP,找到并下载,安装完成之后需要重启浏览器
第三步:在工具只乐观找到SQLite Manager,点击打开
SQLite Manager界面如图所示
注:SQLite Manager是微量型的数据库编程软件,所以一次只能执行一句代码!!!
- 创建数据库
--数据库的建立
create table team
(
-- 创建名字为team的table
stu_id integer primary key autoincrement,
stu_name varchar(100),
stu_password varchar(100),
stu_login varchar(100)
)
--添加信息
insert into team(stu_name,stu_password,stu_login) values('xiaming','123456','xm')
insert into team(stu_name,stu_password,stu_login) values('zhangsan','123456',' zs')
--查询信息
select *from team
--删除信息
delete from team where stu_id=3
工程目录文件如下:
这里需要导入一个系统自带的文件libsqlite3.0.tbd
步骤如图:
- 实现工程
ViewController.h
#import <UIKit/UIKit.h>
#import <sqlite3.h>
@interface ViewController : UIViewController @property(strong,nonatomic)UIButton *showbtn;
@property(strong,nonatomic)UIButton *insertbtn;
@property(strong,nonatomic)UIButton *updatebtn;
@property(strong,nonatomic)UIButton *deletebtn; @end
ViewController.h
#import "ViewController.h" #define PATH [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"team.sqlite"] @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// 获取沙盒 Documents文件路径
NSLog(@"%@",[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]);
[self button]; } -(void)button
{
self.showbtn=[UIButton buttonWithType:UIButtonTypeSystem];
self.showbtn.frame=CGRectMake(100, 50, 200, 50);
[self.showbtn setTitle:@"数据库显示" forState:UIControlStateNormal];
[self.showbtn addTarget:self action:@selector(showSql) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.showbtn]; self.insertbtn=[UIButton buttonWithType:UIButtonTypeSystem];
self.insertbtn.frame=CGRectMake(100, 100, 200, 50);
[self.insertbtn setTitle:@"数据库添加" forState:UIControlStateNormal];
[self.insertbtn addTarget:self action:@selector(insertSql) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.insertbtn]; self.updatebtn=[UIButton buttonWithType:UIButtonTypeSystem];
self.updatebtn.frame=CGRectMake(100, 150, 200, 50);
[self.updatebtn setTitle:@"数据库修改" forState:UIControlStateNormal];
[self.updatebtn addTarget:self action:@selector(updateSql) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.updatebtn]; self.deletebtn=[UIButton buttonWithType:UIButtonTypeSystem];
self.deletebtn.frame=CGRectMake(100, 200, 200, 50);
[self.deletebtn setTitle:@"数据库删除" forState:UIControlStateNormal];
[self.deletebtn addTarget:self action:@selector(deleteSql) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.deletebtn];
} #pragma mark - 显示数据表中的所有信息
-(void)showSql
{
NSLog(@"显示数据库信息");
// 数据库
sqlite3 *db;
// 根据指定的数据库文件存储路径打开数据库
int result=sqlite3_open([PATH UTF8String], &db);
// 创建执行命令对象
sqlite3_stmt *stmt;
// 打开数据库成功
if (result==SQLITE_OK) {
NSLog(@"连接成功");
// 执行预处理命令
int res=sqlite3_prepare_v2(db, "select *from team", -1, &stmt, nil);
if (res==SQLITE_OK) {
// 循环遍历数据表的行信息
while (sqlite3_step(stmt)==SQLITE_ROW) {
// 获取数据表中整型列的信息
int stu_id=sqlite3_column_int(stmt, 0);
NSLog(@"stu_id is %d",stu_id);
// 获取数据表中字符型的列的信息
NSLog(@"%@",[NSString stringWithFormat:@"%s",sqlite3_column_text(stmt, 1)]);
NSLog(@"%@",[NSString stringWithFormat:@"%s",sqlite3_column_text(stmt, 2)] );
NSLog(@"%@",[NSString stringWithFormat:@"%s",sqlite3_column_text(stmt, 3)] );
}
}
}
} #pragma mark -增加信息
-(void)insertSql
{
sqlite3 *db;
sqlite3_stmt *stmt;
sqlite3_open([PATH UTF8String], &db);
int rst=sqlite3_prepare_v2(db, "insert into team(stu_name,stu_password,stu_login) values(?,?,?)", -1, &stmt, nil);
sqlite3_bind_text(stmt, 1, "wangwu", -1, nil);
sqlite3_bind_text(stmt, 2, "123456", -1, nil);
sqlite3_bind_text(stmt, 3, "ww", -1, nil); // 判断是否增加成功
if (rst==SQLITE_OK) {
if (SQLITE_DONE==sqlite3_step(stmt)) {
NSLog(@"add ok");
}else{
NSLog(@"add fail");
}
}
} #pragma mark - 修改数据库
-(void)updateSql
{
sqlite3 *db;
sqlite3_stmt *stmt;
sqlite3_open([PATH UTF8String], &db);
// 方法一
/*
int res = sqlite3_prepare_v2(db, "update team set stu_name=(?),stu_password=(?),stu_login=(?) where stu_id=2" , -1, &stmt, nil);
sqlite3_bind_text(stmt, 1, "xiaoming", -1, nil);
sqlite3_bind_text(stmt, 2, "123456", -1, nil);
sqlite3_bind_text(stmt, 3, "xm", -1, nil);
*/
// 方法二
int rst=sqlite3_prepare_v2(db, "update team setstu_name='zl',stu_password='zl123',stu_login='zhangsan' where stu_id=4", -1, &stmt, nil); // 判断是否修改成功
if (rst==SQLITE_OK) {
if (SQLITE_DONE == sqlite3_step(stmt)) {
NSLog(@" update ok");
}else{
NSLog(@"update fail");
}
}
} -(void)deleteSql
{
sqlite3 *db;
sqlite3_stmt *stmt;
sqlite3_open([PATH UTF8String], &db);
int rst=sqlite3_prepare_v2(db, "delete from team where stu_id=9", -1, &stmt, nil); // 判断是否删除成功
if (rst==SQLITE_OK) {
if (SQLITE_DONE==sqlite3_step(stmt)) {
NSLog(@" delete ok");
}else{
NSLog(@"delete fail");
}
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end
最新文章
- java基础思维导图
- 【安卓】安卓res文件夹下的资源文件与R.java文件里面类的对应关系
- USACO翻译:USACO 2014 JAN三题(2)
- jmeter+ant+jenkins+mac环境搭建
- 系统间通信(5)——IO通信模型和JAVA实践 下篇
- 小学生玩ACM----优先队列
- UNIX时间与本地时间的转换
- 2351: [BeiJing2011]Matrix( hash )
- vs2010使用C
- Centos7+LVS-NAT+apache实验
- 简单 v.s. 基础
- JavaEE学习之JPA中配置文件persistence.xml
- python3 写的一个压测脚本(有待开发)
- hdu5256 二分求LIS+思维
- JQuery中jsCharts图表插件(十)
- Python之路,第十九篇:Python入门与基础19
- es6基础(1)--声明
- html5 canvas arcTo()
- swift:简单使用翻页控制器UIPageViewController
- charles 小米手机安装Charles证书
热门文章
- [PHP源码阅读]strpos、strstr和stripos、stristr函数
- MVVM大比拼小结
- 阿里云 SDK python3支持
- SQL Server 存储中间结果集
- !+";\v1"; 用来“判断浏览器类型”还是用来“IE判断版本”的问题!
- IEEE浮点标准
- ASP.NET Core管道深度剖析(2):创建一个&ldquo;迷你版&rdquo;的管道来模拟真实管道请求处理流程
- 从零开始编写自己的C#框架(14)——T4模板在逻辑层中的应用(三)
- Oracle数据库升级(10.2.0.4->;11.2.0.4)
- 设计模式--观察者模式初探和java Observable模式