2010-08-30 85 views
0

我有一个表有数据。如何从表中检索多个记录?

id type 
1 max 
1 sam 
1 rom 
2 jak 

我要检索的所有type其中id=1;

if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 
      while(sqlite3_step(compiledStatement) == SQLITE_ROW) { 
       NSString *aRecord = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)]; 
       NSLog (@"%@",aRecord); 
      } 

这一说法retrive我只有最后一条记录。我如何获得所有记录?

how to catch these records in the variable. I am using aRecord but it store only last record. So this is the main concern 
+0

使用包装。它非常容易:http://github.com/ccgus/fmdb或http://github.com/schwa/TouchSQL – 2010-08-30 15:43:09

回答

0

的SQL RO做到这一点很简单:

select * from <table_name> where id = 1 

做这样的事情:

NSMutableString *myRecords = [NSMutableString initWithString:@""]; 

if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 
      while(sqlite3_step(compiledStatement) == SQLITE_ROW) { 
       NSString *aRecord = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];   

       myRecords = [myRecords stringByAppendingString:[NSString stringWithFormat:@"%@ ",arecord]];     
       NSLog (@"%@",aRecord); 
       } 

正如彼得Hosey在评论中指出,这会给你一个字符串所有三个记录都由空格分隔。您可能想要用这些记录填充数组。

+0

@ennuikiller,yah,但是如何在变量中捕获这些记录。我正在使用aRecord,但它只存储最后一条记录。所以这是主要关心的问题。 – user12345 2010-08-30 15:06:18

+0

请参阅编辑答案 – ennuikiller 2010-08-30 15:21:29

+1

1.该代码可能会崩溃,因为您在循环之前从未将对象的指针指派给'myRecords',因此您将'stringByAppendingString:'发送给一个随机指针。 2.即使你修正了这个问题,使用'stringByAppendingString:'将简单地连接所有的值,比如“maxsamromjak”。你应该在这里使用一个数组,并将单独的字符串对象放入其中。 – 2010-08-30 18:33:41