iOS sqlite3 的基本使用(增 删 改 查)
iOS sqlite3 的基本使用(增 删 改 查)
这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作.
例:增 删 改 查
如果想了解更多的sql语言可以利用强大的互联网.
想要使用sqlite3是需要添加框架的,那么在哪里去找呢???
图片(框架在哪里)

图片(什么框架???)

做好最基本的操作后进入工程进行编码...
创建数据库并且创建一个表:
//设置句柄 通过句柄对数据库进行操作
static sqlite3 * db = nil;
- (void)viewDidLoad {
[super viewDidLoad];
//设置数据库的路径
NSString * fileName = [[NSSearchPathForDirectoriesInDomains(13, 1, 1)lastObject]stringByAppendingPathComponent:@"text.sqlite"];
NSLog(@"%@",fileName);
//打开数据库 如果没有打开的数据库就建立一个
//第一个参数是数据库的路径 注意要转换为c的字符串
if (sqlite3_open(fileName.UTF8String, &db) == SQLITE_OK) {
NSLog(@"打开数据库成功");
//打开数据库成功后建立数据库内的表
//操作命令的字符串
//注意字符串的结束处有 ; 号
NSString * sql = @"create table if not exists t_text (id integer primary key autoincrement,name text);";
char * errmsg;
sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);
if (errmsg) {
NSLog(@"建表失败 -- %s",errmsg);
}else{
NSLog(@"建表成功");
}
}else{
NSLog(@"打开数据库失败");
}
}
敲入这些代码后运行输出的结果为:
2016-05-10 20:30:21.605 sqlite3[4393:504513] /Users/mac/Library/Developer/CoreSimulator/Devices/4A266116-7D20-4C4F-B90C-BDEBEB56C797/data/Containers/Data/Application/2928252D-3FE5-4F8C-A14C-ADE1AF760453/Library/Caches/text.sqlite
2016-05-10 20:30:21.606 sqlite3[4393:504513] 打开数据库成功
2016-05-10 20:30:21.614 sqlite3[4393:504513] 建表成功
- 第一个log为数据库在沙盒中的位置(后面进入沙盒寻找数据库并打开)
- 第二个log为提示数据库打开成功
- 第三个log为提示成功间表
图片(数据库的中的表内容)

数据库与表都建立成功了....
下面分别实现增删改查
增:
代码操作:
- (IBAction)insert:(id)sender {
//为了测试这里利用随机数与for循环进行多次插入不同数据
for (NSInteger i = 0; i < 10; i ++) {
//最好先判断能否进入数据库在执行操作 这里偷下懒
NSString * sql = [NSString stringWithFormat:@"insert into t_text(name) values('%@');",[NSString stringWithFormat:@"旭宝爱吃鱼--%zd",arc4random_uniform(99) ]];
char * errmsg;
sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);
if (errmsg) {
NSLog(@"插入失败--%s",errmsg);
}else{
NSLog(@"插入成功");
}
}
}
图片(成功插入,图片为证)

删:
代码操作:
- (IBAction)delete:(id)sender {
//这里删除随机id 大于3 小于6的
//操作代码(sql)
//最好先判断能否进入数据库在执行操作 这里偷下懒
NSString * sql = @"delete from t_text where id > 3 and id < 6;";
char * errmsg;
sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);
if (errmsg) {
NSLog(@"删除失败--%s",errmsg);
}else{
NSLog(@"删除成功");
}
}
图片(成功删除,图片为证)

改:
代码操作:
- (IBAction)update:(id)sender {
//这里吧id为9的 name更改为 hello-world
//操作代码(sql)
//最好先判断能否进入数据库在执行操作 这里偷下懒
NSString * sql = @"update t_text set name = 'hello-world' where id = 9;";
char * errmsg;
sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);
if (errmsg) {
NSLog(@"修改失败--%s",errmsg);
}else{
NSLog(@"修改成功");
}
}
图片(成功修改,图片为证)

查:
查询的操作和其他有所不同需要注意一下...
代码操作:
- (IBAction)select:(id)sender {
//查询所有信息
//操作代码(sql)
//最好先判断能否进入数据库在执行操作 这里偷下懒
NSString * sql = @"select * from t_text;";
//查询的句柄,游标
sqlite3_stmt * stmt;
if (sqlite3_prepare(db, sql.UTF8String, -1, &stmt, NULL) == SQLITE_OK) {
//查询数据
while (sqlite3_step(stmt) == SQLITE_ROW) {
//获取表数据的内容
//sqlite3_column_text('句柄',字段索引值)
NSString * name = [NSString stringWithCString:(const char *)sqlite3_column_text(stmt, 1) encoding:NSUTF8StringEncoding];
NSLog(@"name = %@",name);
}
}
}
图片(成功查询,图片为证)

整体代码
//
// ViewController.m
// sqlite3
//
// Created by ma c on 16/5/10.
// Copyright © 2016年 xubaoaichiyu. All rights reserved.
//
#import "ViewController.h"
#import <sqlite3.h>
//设置句柄 通过句柄对数据库进行操作
static sqlite3 * db = nil;
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//设置数据库的路径
NSString * fileName = [[NSSearchPathForDirectoriesInDomains(13, 1, 1)lastObject]stringByAppendingPathComponent:@"text.sqlite"];
NSLog(@"%@",fileName);
//打开数据库 如果没有打开的数据库就建立一个
//第一个参数是数据库的路径 注意要转换为c的字符串
if (sqlite3_open(fileName.UTF8String, &db) == SQLITE_OK) {
NSLog(@"打开数据库成功");
//打开数据库成功后建立数据库内的表
//操作命令的字符串
//注意字符串的结束处有 ; 号
NSString * sql = @"create table if not exists t_text (id integer primary key autoincrement,name text);";
char * errmsg;
sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);
if (errmsg) {
NSLog(@"建表失败 -- %s",errmsg);
}else{
NSLog(@"建表成功");
}
}else{
NSLog(@"打开数据库失败");
}
}
- (IBAction)insert:(id)sender {
//为了测试这里利用随机数与for循环进行多次插入不同数据
for (NSInteger i = 0; i < 10; i ++) {//最好先判断能否进入数据库在执行操作 这里偷下懒
NSString * sql = [NSString stringWithFormat:@"insert into t_text(name) values('%@');",[NSString stringWithFormat:@"旭宝爱吃鱼--%zd",arc4random_uniform(99) ]];
char * errmsg;
sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);
if (errmsg) {
NSLog(@"插入失败--%s",errmsg);
}else{
NSLog(@"插入成功");
}
}
}
- (IBAction)delete:(id)sender {
//这里删除随机id 大于3 小于6的
//操作代码(sql)
//最好先判断能否进入数据库在执行操作 这里偷下懒
NSString * sql = @"delete from t_text where id > 3 and id < 6;";
char * errmsg;
sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);
if (errmsg) {
NSLog(@"删除失败--%s",errmsg);
}else{
NSLog(@"删除成功");
}
}
- (IBAction)update:(id)sender {
//这里吧id为9的 name更改为 hello-world
//操作代码(sql)
//最好先判断能否进入数据库在执行操作 这里偷下懒
NSString * sql = @"update t_text set name = 'hello-world' where id = 9;";
char * errmsg;
sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);
if (errmsg) {
NSLog(@"修改失败--%s",errmsg);
}else{
NSLog(@"修改成功");
}
}
- (IBAction)select:(id)sender {
//查询所有信息
//操作代码(sql)
//最好先判断能否进入数据库在执行操作 这里偷下懒
NSString * sql = @"select * from t_text;";
//查询的句柄,游标
sqlite3_stmt * stmt;
if (sqlite3_prepare(db, sql.UTF8String, -1, &stmt, NULL) == SQLITE_OK) {
//查询数据
while (sqlite3_step(stmt) == SQLITE_ROW) {
//获取表数据的内容
//sqlite3_column_text('句柄',字段索引值)
NSString * name = [NSString stringWithCString:(const char *)sqlite3_column_text(stmt, 1) encoding:NSUTF8StringEncoding];
NSLog(@"name = %@",name);
}
}
}
@end
iOS sqlite3 的基本使用(增 删 改 查)的更多相关文章
- iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
- 好用的SQL TVP~~独家赠送[增-删-改-查]的例子
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- django ajax增 删 改 查
具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...
- ADO.NET 增 删 改 查
ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...
- MVC EF 增 删 改 查
using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...
- python基础中的四大天王-增-删-改-查
列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...
- 简单的php数据库操作类代码(增,删,改,查)
这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...
- MongoDB增 删 改 查
增 增加单篇文档 > db.stu.insert({sn:'001', name:'lisi'}) WriteResult({ "nInserted" : 1 }) > ...
- Go语言之进阶篇mysql增 删 改 查
一.mysql操作基本语法 1.创建名称nulige的数据库 CREATE DATABASE nulige DEFAULT CHARSET utf8 COLLATE utf8_general_ci; ...
随机推荐
- React Native版本升级的正确姿势
基于React Native(简称:RN)的APP也发布了三个版本了,RN由于两周就会发布一版从最开始项目用的0.29到最近的0.37,做为一个开源项目来说更新真是跟坐火箭般快速,当然对于我们使用的人 ...
- C#:Func的同步、异步调用
using System; namespace ActionDemo { class Program { static void Main(string[] args) { Console.Write ...
- WebApp简单制作(后端也可以装逼啦)
前端越来越吃香的感觉 年后回来,跟之前和几个同事和朋友聊天,发现有两个.net的和一个php的朋友都转到了前端,真是出乎意料.自从之前的webapp兴起后,前端感觉比后端吃香很多,总结朋友们转的原因, ...
- 'display' VS 'visibility'
常用的display属性值: none此元素不会被显示并且不占用空间: block此元素显示为块级元素,此元素前后会带有换行符: inline默认,此元素会被显示为内联元素,元素前后没有换行符: in ...
- csharp:using OpenXml SDK 2.0 and ClosedXML read excel file
https://openxmlexporttoexcel.codeplex.com/ http://referencesource.microsoft.com/ 引用: using System; u ...
- 修正 XE6 TListView 上方 SearchBok 右边的清除钮显示
注意:XE7 已修正这个问题. Delphi Firemonkey TListView 提供了搜寻的功能,但在 XE6 以前的版本,可以显示右边的清除按钮,在 XE6 确消失了,这里提供一个修正的方案 ...
- object references an unsaved transient instance - save the transient instance before flushing错误
异常1:not-null property references a null or transient value解决方法:将“一对多”关系中的“一”方,not-null设置为false(参考资料: ...
- 初学C++之自定义类型名简化
说明:本人使用的是vc++ IDE:vs2013 我在自定义一些类时,有时会取一些很长的名字,但是这不利于使用,这个时候就可以使用类型名简化. class MathAddBBBB { }; using ...
- Verilog学习笔记简单功能实现(八)...............同步FIFO
Part 1,功能定义: 用16*8 RAM实现一个同步先进先出(FIFO)队列设计.由写使能端控制该数据流的写入FIFO,并由读使能控制FIFO中数据的读出.写入和读出的操作(高电平有效)由时钟的上 ...
- 实体类的枚举属性--原来支持枚举类型这么简单,没有EF5.0也可以
通常,我们都是在业务层和界面层使用枚举类型,这能够为我们编程带来便利,但在数据访问层,不使用枚举类型,因为很多数据库都不支持,比如我们现在用的SqlServer2008就不支持枚举类型的列,用的时候也 ...