检查FMDB中某条记录之后或某条记录之前是不是存在行

Posted

技术标签:

【中文标题】检查FMDB中某条记录之后或某条记录之前是不是存在行【英文标题】:Checking if an row exist after a certain record or before a certain record in FMDB检查FMDB中某条记录之后或某条记录之前是否存在行 【发布时间】:2014-02-24 04:36:13 【问题描述】:

我正在制作一个应用程序,它需要我遍历存储在内部 SQLite 数据库中的数据列表。我在我的应用程序中使用 FMDB 进行所有数据库操作。如果显示的数据有下一个记录或上一个记录,我希望我的“下一个”和“上一个”可用,否则,按钮将被禁用以进行相应的操作。我正在发送用户单击数据列表以转到“数据视图区域”的数据的 ID。

我的表结构是

create table messagelist(id int primary key, title text, time text, message text)

在“数据视图区域”中,我触发了查询

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"message.sqlite"];
FMDatabase *database = [FMDatabase databaseWithPath:path];
[database open];
NSString *query = @"SELECT *,(SELECT id FROM messagelist WHERE id < ";
query = [query stringByAppendingString:[NSString stringWithFormat:@"%@",_id_row]];
query = [query stringByAppendingString:@" ORDER BY id DESC LIMIT 1) AS previous_id,(SELECT id FROM messagelist WHERE id > "];
query = [query stringByAppendingString:[NSString stringWithFormat:@"%@",_id_row]];
query = [query stringByAppendingString:@" ORDER BY id ASC LIMIT 1) AS next_id FROM messagelist WHERE id = "];
query = [query stringByAppendingString:[NSString stringWithFormat:@"%@",_id_row]];
FMResultSet *results_one = [database executeQuery:query];
if([results_one next])


    NSLog(@"Previous id is %d and next id is %d", [results_one intForColumn:@"previous_id"],[results_one intForColumn:@"next_id"]);

这并没有返回任何东西,但是我的应用程序的 android 版本可以很好地处理这个查询。我哪里做错了?

N:B:- 我只是通过导入 SQLite 浏览器来查看数据库,我发现没有插入 id,怎么可能,id 被声明为主键,因此它应该自动插入并相应增加.

【问题讨论】:

【参考方案1】:

自己解决了。没有像我写的那样插入主键 创建表消息列表(id int 主键,标题文本,时间文本,消息文本)而不是 创建表messagelist(id INTEGER PRIMARY KEY, title text, time text, message text)

已解决!!!!

【讨论】:

以上是关于检查FMDB中某条记录之后或某条记录之前是不是存在行的主要内容,如果未能解决你的问题,请参考以下文章

在SQL中如何快速查询某条记录在所有表中是不是存在?

Bug: 删除中间某条记录后/删除最后一条记录再添加 ,auto-increment的自动增长不连续

JFinal Model判断数据库某条记录的属性字段是否包含空值

获取用户/团队对某条记录的权限,共享某条记录的某些权限给指定用户/团队的方法

history api

SQL 表中如何让某条记录的某个属性值与另一个表中的某条记录的某个属性值相关联