IOS 开发学习33 使用sqlite3

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

这里仅仅实现一个简单的查询功能。
时间: 2024-12-29 23:18:53

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

IOS开发学习笔记(二)-语音识别(科大讯飞)

上次简单地讲解了如何利用科大讯飞完成语音合成,今天接着也把语音识别整理一下.当然,写代码前我们需要做的一些工作(如申请appid.导库),在上一篇语音合成的文章当中已经说过了,不了解的可以看看我上次的博文,那么这次直接从堆代码开始吧. 详细步骤: 1.导完类库之后,在工程里添加好用的头文件.在视图里只用了一个UITextField显示识别的内容,两个UIButton(一个开始监听语音,一个结束监听),然后引入类.添加代理,和语音合成的一样. MainViewController.h 1 #imp

IOS开发学习笔记--语音合成(科大讯飞)

      现在语音服务越来越热,我们平时使用的很多软件都带有语音合成和识别功能,用起来也很方便.说到语音服务,Google和微软都提供过API接口,不过笔者要介绍的是国内的智能语音技术提供商---科大讯飞.之前看过一个比较Google.微软和科大讯飞语音识别引擎的博文(http://fqctyj.blog.163.com/blog/static/70843455201361955322797/),有兴趣可以去看看.笔者接触语音服务的时间也不长,对语音服务也不是很了解,但是拆解过科大讯飞的Dem

ios开发学习资料总汇

ios开发学习资料总汇 下面是收集的一些学习资料. 1.唐巧精心整理了国内40多位iOS开发博主的博客地址列表 2.ios常见加密: 链接: http://pan.baidu.com/s/1eQTGFIE 密码: p8ay 3.

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro

iOS开发学习笔记:基础篇

iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境),Xcode是一个集成开发环境,包括了编辑器.调试.模拟器等等一系列方便开发和部署的工具,iOS SDK则是开发应用所必需,不同的SDK分别对应不同的iOS版本或设备,通常我们需要下载多个iOS SDK以确保我们开发的程序能够在不同版本的iOS上正常运行. 创建新工程 Xcode提供了很多种工程模

11个超棒的iOS开发学习网站

11个超棒的iOS开发学习网站 原文:11 Insanely Great iOS Developers Sites永不止步地向他人学习 我相信,要想从一个"还不错"的人变成一个卓越的人,我们需要不停地向他人学习,同时还得尽早地适应最新的技术和工具.除了苹果官方文档网站之外,我列举了一些能获取有价值的文章和资源的网站,这些网站能够帮助我们更上一个台阶. 让我们先看一些原创内容博客: objc.io 这个网站由世界级的iOS工程师每月进行更新.上面可以看到关于某些话题的高质量文章和深度评论

IOS开发学习笔记-(3) 进度条、等待动画开始停止

一.创建对应空间视图  ,如下图: 二.编写对应的 .h 代码,如下 : #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activWaitNetWork; @property (weak, nonatomic) IBOutlet UIProgressView *pgrsDownLo

ios开发 学习积累20161027~

学习ios这几天来,总结下,函数的定义,调用.跟其他语言都有一定的区别: 几个特别重要的就是对象的迭代的使用和判断.取随机数.动画的实现及数组的升入研究等等 之前的总结地址 ios开发 学习积累20161024~20161026: http://www.cnblogs.com/jasonxu19900827/p/5994919.html ib和storyboard开发的区别 看了ib开发和storyboard开发,从ios6开始xcode就用storyboard取代了nib. ib写的代码多点,

IOS开发学习笔记(1)-----UILabel 详解

1. [代码][C/C++]代码     //创建uilabelUILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(20, 40, 280, 80)];//设置背景色label1.backgroundColor = [UIColor grayColor];//设置taglabel1.tag = 91;//设置标签文本label1.text = @"Hello world!";//设置标签文本字体和字体大小label1.