2014-02-24 40 views
0

我正在制作一个应用程序,它要求我遍历存储在内部SQLite数据库中的数据列表。我在我的应用程序中使用FMDB进行所有数据库操作。如果显示的数据有下一条记录或上一条记录,我希望我的“下一条”和“上一条”可用,否则,各个操作的按钮将被禁用。我正在发送用户点击数据列表的数据的ID以进入“数据视图区域”。检查某个记录之后或FMDB中的特定记录之前是否存在行

我的表结构 在 “数据视图区” 创建表将MessageList(ID INT主键,标题文本,时间文本,消息文本)

,我解雇查询

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被声明为主键,因此应该自动插入并相应地增加。 Thanx提前。

回答

0

自己解决。主键没有插入,因为我写了 create table messagelist(id int primary key,title text,time text,message text)而不是 create table messagelist(id INTEGER PRIMARY KEY,title text,time text,message text)

已解决!!!!

相关问题