当前位置:首页 > 操作系统 > MacOs

Mac 下使用sqlite3命令行

// 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文件

<code><span class="hljs-comment">//</span>
<span class="hljs-comment">//  DbUtils.m</span>
<span class="hljs-comment">//  smart</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">//  Created by 谢厂节 on 15/5/12.</span>
<span class="hljs-comment">//  Copyright (c) 2015年 WHR. All rights reserved.</span>
<span class="hljs-comment">//</span>

<span class="hljs-preprocessor">#import <span class="hljs-title">"DbUtils.h"</span></span>
<span class="hljs-preprocessor">#import <span class="hljs-title">"KMTypes.h"</span></span>
<span class="hljs-preprocessor">#import <span class="hljs-title">"KMContents.h"</span></span>

<span class="hljs-class"><span class="hljs-keyword">@implementation</span> <span class="hljs-title">DbUtils</span></span>

<span class="hljs-comment">//打开数据库的方法</span>

- (<span class="hljs-keyword">void</span>)openDB{
       <span class="hljs-comment">///文件是否存在</span>
    <span class="hljs-built_in">NSFileManager</span>* fileManager = [<span class="hljs-built_in">NSFileManager</span> defaultManager];
    <span class="hljs-built_in">NSString</span> *dbpath=[<span class="hljs-keyword">self</span> filePath];
    <span class="hljs-built_in">NSLog</span>(@<span class="hljs-string">"database path:%@"</span>,dbpath);
    <span class="hljs-built_in">BOOL</span> success = [fileManager fileExistsAtPath:dbpath];
    <span class="hljs-keyword">if</span> (!success) {
        <span class="hljs-built_in">NSString</span> *resourcePath=[[<span class="hljs-built_in">NSBundle</span> mainBundle]resourcePath];
        <span class="hljs-comment">//自动复制</span>
        <span class="hljs-built_in">NSString</span> *sourceDBPath=[resourcePath stringByAppendingPathComponent:@<span class="hljs-string">"app.bundle/datas.sqlite"</span>];

        <span class="hljs-built_in">NSError</span> *error;
        success = [fileManager copyItemAtPath:sourceDBPath toPath:dbpath error:&error];
        <span class="hljs-keyword">if</span>(!success)
            NSAssert1(<span class="hljs-number">0</span>,@<span class="hljs-string">"数据库附加失败!‘%@‘."</span>, [error localizedDescription]);
        <span class="hljs-keyword">else</span>
            <span class="hljs-built_in">NSLog</span>(@<span class="hljs-string">"数据库附加成功:%@"</span>,dbpath);
    }
    <span class="hljs-keyword">if</span> (sqlite3_open([[<span class="hljs-keyword">self</span> filePath] UTF8String], &db) != SQLITE_OK) {
        sqlite3_close(db);
        NSAssert(<span class="hljs-number">0</span>, @<span class="hljs-string">"数据库打开失败。"</span>);
    }
}
- (<span class="hljs-keyword">void</span>)closeDB{
    sqlite3_close(db);
}
<span class="hljs-comment">//该方法用于返回数据库在Documents文件夹中的全路径信息</span>
- (<span class="hljs-built_in">NSString</span> *)filePath{
    <span class="hljs-built_in">NSArray</span> *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, <span class="hljs-literal">YES</span>);
    <span class="hljs-built_in">NSString</span> *documentsDir = [paths objectAtIndex:<span class="hljs-number">0</span>];
    <span class="hljs-keyword">return</span> [documentsDir stringByAppendingPathComponent:@<span class="hljs-string">"datas.sqlite"</span>];
}
<span class="hljs-comment">////查询数据所有类别</span>
- (<span class="hljs-built_in">NSMutableArray</span> *)getAllTypes{
    [<span class="hljs-keyword">self</span> openDB];
    <span class="hljs-built_in">NSMutableArray</span> *array=[<span class="hljs-built_in">NSMutableArray</span> arrayWithCapacity:<span class="hljs-number">6</span> ];

    <span class="hljs-built_in">NSString</span> *sql = @<span class="hljs-string">"SELECT * FROM km_types"</span>;
    sqlite3_stmt *statement;

    <span class="hljs-keyword">if</span> (sqlite3_prepare_v2(db, [sql UTF8String], -<span class="hljs-number">1</span>, &statement, <span class="hljs-literal">nil</span>) == SQLITE_OK) {
        <span class="hljs-keyword">while</span> (sqlite3_step(statement) == SQLITE_ROW) {
            KMTypes* k= [[KMTypes alloc]init];
            <span class="hljs-keyword">int</span> type_id = (<span class="hljs-keyword">int</span>)sqlite3_column_int(statement,<span class="hljs-number">0</span>);
            <span class="hljs-keyword">int</span> parent_id = (<span class="hljs-keyword">int</span>)sqlite3_column_int(statement,<span class="hljs-number">1</span>);
            <span class="hljs-keyword">char</span> *type_title = (<span class="hljs-keyword">char</span> *)sqlite3_column_text(statement, <span class="hljs-number">2</span>);
            <span class="hljs-keyword">int</span> type_order = (<span class="hljs-keyword">int</span>)sqlite3_column_int(statement,<span class="hljs-number">3</span>);
            <span class="hljs-keyword">int</span> topic_count=(<span class="hljs-keyword">int</span>)sqlite3_column_int(statement,<span class="hljs-number">4</span>);

            <span class="hljs-built_in">NSString</span> *type_titleStr = [[<span class="hljs-built_in">NSString</span> alloc] initWithUTF8String:type_title];
            k<span class="hljs-variable">.type_title</span> = type_titleStr;
            k<span class="hljs-variable">.type_id</span>=type_id;
            k<span class="hljs-variable">.parent_id</span> = parent_id;
            k<span class="hljs-variable">.type_order</span> = type_order;
            k<span class="hljs-variable">.topic_count</span>=topic_count;

            [array addObject:k];

        }
        sqlite3_finalize(statement);
    }
    [<span class="hljs-keyword">self</span> closeDB];
    <span class="hljs-keyword">return</span> array;
}

<span class="hljs-keyword">@end</span>

这里只实现一个简单的查询功能。</code>

Mac 下使用sqlite3命令行

标签:sqlite3   ios   ios6   

本文系统来源:http://blog.csdn.net/xundh/article/details/46425833


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐