sqlite数据库检索

1. 数据库检索, 得到某字段下所有值

 1 - (NSArray *)selectWithColumName: (NSString *)columName
 2                        tableName: (NSString *)tableName {
 3     if ([self openDatabase] == YES) {
 4
 5         NSString * selectSQL = [NSString stringWithFormat:@"SELECT %@ FROM %@", columName, tableName];
 6         sqlite3_stmt * stmt = nil;
 7
 8         int preResult = sqlite3_prepare_v2(_db, [selectSQL UTF8String], -1, &stmt, NULL);
 9
10         if (preResult == SQLITE_OK) {
11             NSMutableArray * array = [NSMutableArray array];
12
13             while (sqlite3_step(stmt) == SQLITE_ROW) {
14                 [array addObject:[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 0)]];
15             }
16
17             sqlite3_finalize(stmt);
18             return array;
19         } else {
20             NSLog(@"check your sqlQuery");
21             return nil;
22         }
23     } else {
24         NSLog(@"%@", [self errorWithMessage:@"openDB Failure"]);
25         return nil;
26     }
27 }

2. 通过你存储的模型以及数据表名得到所有的数据

 1 #pragma mark - select DB
 2 - (NSArray *)selectAllMembersWithTableName: (NSString *)tableName
 3                                objectModel:(id)object; {
 4     if ([self openDatabase] == YES) {
 5
 6         NSString * selectSQL = [NSString stringWithFormat:@"SELECT * FROM %@", tableName];
 7         sqlite3_stmt * stmt = nil;
 8
 9         int preResult = sqlite3_prepare_v2(_db, [selectSQL UTF8String], -1, &stmt, NULL);
10
11         if (preResult == SQLITE_OK) {
12             NSMutableArray * array = [NSMutableArray array];
13
14             while (sqlite3_step(stmt) == SQLITE_ROW) {
15
16                 id model = [[[object class] alloc] init];
17                 for (int i=0; i<sqlite3_column_count(stmt); i++) {
18                     [model setValue:[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, i)] forKey:[NSString stringWithUTF8String:(const char *)sqlite3_column_name(stmt, i)]];
19                 }
20                 [array addObject:model];
21                 [model release];
22             }
23
24             sqlite3_finalize(stmt);
25             return array;
26         } else {
27             NSLog(@"check your sqlQuery and Model");
28             return nil;
29         }
30     } else {
31         NSLog(@"%@", [self errorWithMessage:@"SqlQuery error"]);
32         return nil;
33     }
34 }

3. 通过key:value对应关系的字典为数据库查询语句的基础, 得到需要的值

.h文件定义以及使用提示

#pragma mark selectWithSqlQueryDict
/*
 get value with sql statement
 you must give columName(dict key) = value(dict value) - all string type.
 e.g  dict = {
                "name" = "xxdbuser",
                "age"  = "19"
                };
 object: model you want
 通过包含有你的约束条件的字典、 通过表名称、 你所给的模型、 返回包含有若干模型的数组
 */
- (NSArray *)selectWithSqlQueryDictionary: (NSDictionary *)sqlQueryDictionary
                                tableName: (NSString *)tableName
                                    model: (id)object;

.m 文件实现

 1 #pragma mark selectWithSqlQuery
 2 - (NSArray *)selectWithSqlQueryDictionary: (NSDictionary *)sqlQueryDictionary
 3                                 tableName: (NSString *)tableName
 4                                     model: (id)object {
 5
 6     // getAllKeys
 7     NSArray * keyArray = sqlQueryDictionary.allKeys;
 8     NSString * sqlQuery = [NSString stringWithFormat:@"SELECT * FROM %@ WHERE ", tableName];
 9
10     if ([self openDatabase] == YES) {
11
12         // foreach build sqlQuery
13         for (NSString * key in keyArray) {
14             sqlQuery = [sqlQuery stringByAppendingString:[NSString stringWithFormat:@"%@ = ‘%@‘ and ", key, sqlQueryDictionary[key]]];
15         }
16         sqlQuery = [sqlQuery substringToIndex:[sqlQuery length] - 4];
17
18         sqlite3_stmt * stmt;
19
20         int result = sqlite3_prepare_v2(_db, [sqlQuery UTF8String], -1, &stmt, NULL);
21         if (result == SQLITE_OK) {
22             NSMutableArray * array = [NSMutableArray array];
23
24             while (sqlite3_step(stmt) == SQLITE_ROW) {
25
26                 id model = [[[object class] alloc] init];
27                 for (int i=0; i<sqlite3_column_count(stmt); i++) {
28                     [model setValue:[NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, i)] forKey:[NSString stringWithUTF8String:(const char *)sqlite3_column_name(stmt, i)]];
29                 }
30                 [array addObject:model];
31                 [model release];
32             }
33
34             sqlite3_finalize(stmt);
35             return array;
36         } else {
37             NSLog(@"check your sqlQuery");
38             return nil;
39         }
40
41     } else {
42         NSLog(@"%@", [self errorWithMessage:@"openDB Failure"]);
43         return nil;
44     }
45 }

4. 错误信息的输出

1 #pragma mark - errorMessage
2 - (NSError *)errorWithMessage:(NSString *)message {
3     return [NSError errorWithDomain:@"XXDB" code:sqlite3_errcode(_db) userInfo:[NSDictionary dictionaryWithObject:message forKey:NSLocalizedDescriptionKey]];
4 }

ok 今天就到这里。 数据库是数据持久化最常用的办法。 一定熟练掌握用户的各种需求实现的办法

时间: 2024-10-13 04:25:13

sqlite数据库检索的相关文章

在 Android 应用程序中使用 SQLite 数据库以及怎么用

part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开源的,不论什么人都能够使用它.很多开源项目((Mozilla, PHP, Python)都使用了 SQLite. SQLite 由下面几个组件组成:SQL 编译器.内核.后端以及附件.SQLite 通过利用虚拟机和虚拟数据库引擎(VDBE).使调试.改动和扩展 SQLite 的内核变得更加方便. 图

php读取sqlite数据库入门实例

php读取sqlite数据库的例子,php编程中操作sqlite入门实例.原文参考:http://www.jbxue.com/article/php/22383.html在使用SQLite前,要确保php.ini中已经启用sqlite和pdo配置 打开PHP.INI文件,打下以下扩展:extension=php_pdo.dll extension=php_pdo_sqlite.dllextension=php_sqlite.dllsqlite_open命令是打开一个数据库文件. 如果没有文件则创

【Android】13.0 第13章 创建和访问SQLite数据库&mdash;本章示例主界面

分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 Android 内置了三种数据存取方式:SQLite数据库.文件.SharedPreferences. 这一章我们主要学习如何使用SQLite数据库存取数据. 1.SQLite是个什么档次的数据库 SQLite是一种免费的.开源的数据库,由于它独特的设计(把各种数据类型都转换为它自己内部处理的5种类型)导致其占用内存极少,因此很多项目都喜欢使用它. Android集成了SQLite并内置了专门对SQLite操作

RSQLite 操作sqlite数据库

RSQLite 可以在R中方便的创建sqlite数据库,并进行检索, 这个R包依赖于DBI包 github 上的地址:https://github.com/rstats-db/RSQLite github上的简介详细的介绍了如何用RSQLite 创建一个数据库并检索数据 基本用法: library(RSQLite) con <- dbConnect(SQLite(), "test.db") # 建立数据库连接, test.db 为要创建的数据库的名字# 将R中的数据库对象mtca

Andoird - SQLite 数据库 基础教程

链接来源 http://www.tutorialspoint.com/android/android_sqlite_database.htm SQLite是一个开源的SQL数据库,这个数据库把数据存储到设备的一个文本文件里.Android里面已经集成了SQLite数据库工具. SQLite 支持所有的关系数据库特点.为了进入SQLite数据,你不需要建立任何像JDBC,ODBC之类的连接. 数据库-包 主要的包是android.database.sqlite,这个包里面包含了管理你自己数据库的类

安卓 SQLite数据库操作实例

前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tc

Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表,以及同步和异步执行模式)

系列文章导航 Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表) Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数) Adobe AIR中使用Flex连接Sqlite数据库(3)(查询) Adobe AIR中使用Flex连接Sqlite数据库(4)(事务) Flex,Fms3相关文章索引 Fms3和Flex打造在线多人视频会议和视频聊天(附原代码) 免费美女视频聊天,多人视频会议功能加强版本(Fms3和Flex开发(附源码))

在安卓开发中使用SQLite数据库操作实例

前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tc

[Swift通天遁地]七、数据与安全-(5)使用开源类库对SQLite数据库进行高效操作

本文将演示使用开源类库对SQLite数据库进行高效操作. 首先确保在项目中已经安装了所需的第三方库. 点击[Podfile],查看安装配置文件. 1 platform :ios, ‘12.0’ 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'SQLite.swift' 7 end 根据配置文件中的相关配置,安装第三方库. 在项目导航区,打开视图控制