sqlite3 命令行简单使用

sqlite3 路径 //打开数据库路径连接

select * from sqlite_master where type=”table”; //显示全部表结构

select * from testable; //显示某张表数据

.tables //查看表

.help //查看帮助

.quit //退出

xcode使用sqlite3步骤

1.加入libsqlite3.dylib

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHVuZGg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="这里写图片描写叙述" title="">

2.头文件

//
// DbUtils.h
// smart
//
// Created by 谢厂节 on 15/5/12.
// Copyright (c) 2015年 WHR. All rights reserved.
// #import <Foundation/Foundation.h>
#import "sqlite3.h" @interface DbUtils : NSObject
{
sqlite3 *db; //声明一个sqlite3数据库
}
- (NSString *)filePath;//数据库文件的路径。一般在沙箱的Documents里边操作
-(void)openDB;
-(void)closeDB;
-(NSMutableArray *)getAllTypes;
@end

.m文件

//
// DbUtils.m
// smart
//
// Created by 谢厂节 on 15/5/12.
// Copyright (c) 2015年 WHR. All rights reserved.
// #import "DbUtils.h"
#import "KMTypes.h"
#import "KMContents.h" @implementation DbUtils //打开数据库的方法 - (void)openDB{
///文件是否存在
NSFileManager* fileManager = [NSFileManager defaultManager];
NSString *dbpath=[self filePath];
NSLog(@"database path:%@",dbpath);
BOOL success = [fileManager fileExistsAtPath:dbpath];
if (!success) {
NSString *resourcePath=[[NSBundle mainBundle]resourcePath];
//自己主动复制
NSString *sourceDBPath=[resourcePath stringByAppendingPathComponent:@"app.bundle/datas.sqlite"]; NSError *error;
success = [fileManager copyItemAtPath:sourceDBPath toPath:dbpath error:&error];
if(!success)
NSAssert1(0,@"数据库附加失败。'%@'.", [error localizedDescription]);
else
NSLog(@"数据库附加成功:%@",dbpath);
}
if (sqlite3_open([[self filePath] UTF8String], &db) != SQLITE_OK) {
sqlite3_close(db);
NSAssert(0, @"数据库打开失败。");
}
}
- (void)closeDB{
sqlite3_close(db);
}
//该方法用于返回数据库在Documents目录中的全路径信息
- (NSString *)filePath{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:@"datas.sqlite"];
}
////查询数据全部类别
- (NSMutableArray *)getAllTypes{
[self openDB];
NSMutableArray *array=[NSMutableArray arrayWithCapacity:6 ]; NSString *sql = @"SELECT * FROM km_types";
sqlite3_stmt *statement; if (sqlite3_prepare_v2(db, [sql UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
KMTypes* k= [[KMTypes alloc]init];
int type_id = (int)sqlite3_column_int(statement,0);
int parent_id = (int)sqlite3_column_int(statement,1);
char *type_title = (char *)sqlite3_column_text(statement, 2);
int type_order = (int)sqlite3_column_int(statement,3);
int topic_count=(int)sqlite3_column_int(statement,4); NSString *type_titleStr = [[NSString alloc] initWithUTF8String:type_title];
k.type_title = type_titleStr;
k.type_id=type_id;
k.parent_id = parent_id;
k.type_order = type_order;
k.topic_count=topic_count; [array addObject:k]; }
sqlite3_finalize(statement);
}
[self closeDB];
return array;
} @end 这里仅仅实现一个简单的查询功能。

IOS 开发学习33 使用sqlite3的更多相关文章

  1. ios开发 学习积累20161027~20161031

    前言 学习ios这几天来,总结下,函数的定义,调用.跟其他语言都有一定的区别: 几个特别重要的就是对象的迭代的使用和判断.取随机数.动画的实现及数组的深入研究等等 之前的总结地址 ios开发 学习积累 ...

  2. iOS开发学习概述及知识整理

    设计师设计出来了一个不错的引导界面,然而当我看到设计稿的时候,我们的app也没几天就要上线了.这个界面模仿了Evernote iOS app的风格. 我以迅雷不及掩耳盗铃之势开始在Xcode上编程,用 ...

  3. iOS开发学习笔记:基础篇

    iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境 ...

  4. ios开发之OC基础-ios开发学习路线图

    本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录知识点关键字,把把握重点,然后再 ...

  5. iOS开发学习路线图

    很多初学iOS开发的人会经常问:“我想学iOS应该从何入手呢?”.作为一个做了2年多各种iOS开发的程序员,只想写写自己的一些心得体会,好和体验与不好的体验.写的不好,请多包涵.希望能起到抛砖引玉的作 ...

  6. 【转】iOS开发24:使用SQLite3存储和读取数据

    转自:http://my.oschina.net/plumsoft/blog/57626 SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效.SQLite3使得不必将每个对象都加 ...

  7. iOS开发学习路径的一些建议

    结合自己情况聊下iOS学习建议,这里不讲大道理,说说具体怎么做.欢迎大家拍砖. 1.第一点要求 ,能比较顺畅的阅读官方的文档 如果你连官方的文档读起来都非常困难,那你还谈什么提高和进阶,咱们学习iOS ...

  8. iOS开发学习 阶段过程简述

    下面就简单介绍一下我iOS开发的感受,也是学习iOS开发的一个体系架构. 1 iOS开发环境 1.1 开发环境 标准的配置是Mac OS X + Xcode. MacOSX的话首选用苹果电脑,macm ...

  9. IOS开发学习 碎片S

    非常感谢提供一下内容的人和组织! 字符串编码:http://www.cnblogs.com/KevinYang/archive/2010/06/18/1760597.html Foundation框架 ...

随机推荐

  1. idea中使用FindBugs-IDEA插件

    下载 - 安装 - 重启idea即可: 项目右键或者文件右键即可看到  FindBugs 选项. 选择某个选项直接检测即可.检测结果如下图: 这里的Correctness是重点关注对象.这里面的错误往 ...

  2. JavaScript中字符串分割函数split用法实例

    这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaSc ...

  3. HDU 6464.免费送气球-动态开点-权值线段树(序列中第first小至第second小的数值之和)(感觉就是只有一个状态的主席树) (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

    免费送气球 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  4. python datetime处理时间(转)

    Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块,它提供 的接口与C标准库time.h基本一致.相比于time模块,datetime模块的接 ...

  5. AGC 012 D - Colorful Balls

    题面在这里! 为什么atcoder都是神仙题啊qwq 首先发现如果要让 x,y 互换位置的话,要么通过他们直接换 (也就是x和y满足两种操作之一),要么间接换,通过一些其他的元素形如 x可以和 a[1 ...

  6. HDU 6040 Hints of sd0061(nth_element)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6040 [题目大意] 给出一个随机数生成器,有m个询问,问第bi小的元素是啥 询问中对于bi< ...

  7. Eden的退役记

    好久没更博客了, 这篇随笔不同于之前的学术性随笔.游记,只是来发泄一下自己的情感,回忆一下自己的OI经历…… 五年的OI生涯结束了 初一:懵懂的我刚接触了OI,被其功能吸引.由于运气好过了初赛,然而复 ...

  8. python基础之re,sys,suprocess模块

    re 正则表达式 1.什么是正则? 正则就是用一系列具有特殊含义的字符组成的规则,该规则用来描述具有某一特征的字符串. 正则就是用来在一个大的字符串匹配出符合规则的子字符串 2.为什么用正则? 正则可 ...

  9. how to solve "[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!"

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  10. 四种有能力取代Cookies的客户端Web存储方案

    目前在用户的网络浏览器中保存大量数据需要遵循几大现有标准,每一种标准都拥有自己的优势.短板.独特的W3C标准化状态以及浏览器支持级别.但无论如何,这些标准的实际表现都优于广泛存在的cookies机制. ...