2014-09-22 46 views
-2
NSString *query = @"select id from info"; 
    // Get the results. 
    if (self.arrPeopleInfo != nil) { 
     self.arrPeopleInfo = nil; 
    } 
    self.arrPeopleInfo = [[NSArray alloc] initWithArray:[self.dbManager loadDataFromDB:query]]; 

    // Reload the table view. 
    //[self.tblPeople reloadData]; 

    /*_maintitle = @[@"Title 1", 
        @"Title 2", 
        @"Title 3", 
        @"Title 4", 
        @"Title 5", 
        @"Title 6", 
        @"Title 7"];*/ 
    NSArray *allval = _arrPeopleInfo; 

    NSLog(@"%@", allval); 

在上面的代碼中,我希望把所有的ID從數據庫中提取,並像_maintitle數組所有ID。我取出由表中的數據從sqlite的Xcode和我想只插入ID列在一個數組

+0

哪裏這個'_maintitle'從何而來?它也在數據庫中嗎? – trojanfoe 2014-09-22 11:53:02

+0

不,它只是一個恆定值的staic陣列 – 2014-09-22 11:55:04

+0

什麼是「ID」?我們看不到您的查詢,我們沒有看到數據庫佈局,也沒有看到類似「id」的名稱。 (好的,我看到隱藏在那裏的查詢,格式不正確。) – 2014-09-22 12:04:13

回答

0

您應該真的將標題存儲在數據庫中,並且允許最大的靈活性和一致性(在某些數據庫上,除sqlite以外,數據庫引擎可以通過檢查titles來確保info.id列的有效性表):

CREATE TABLE titles (
    id INTEGER PRIMARY KEY, 
    title TEXT 
); 

INSERT INTO titles (id, title) VALUES (1, 'Title 1'); 
INSERT INTO titles (id, title) VALUES (2, 'Title 2'); 
INSERT INTO titles (id, title) VALUES (3, 'Title 3'); 
INSERT INTO titles (id, title) VALUES (4, 'Title 4'); 
INSERT INTO titles (id, title) VALUES (5, 'Title 5'); 
INSERT INTO titles (id, title) VALUES (6, 'Title 6'); 
INSERT INTO titles (id, title) VALUES (7, 'Title 7'); 
INSERT INTO titles (id, title) VALUES (8, 'Title 8'); 

,然後你可以在一個選擇這兩個ID和標題一舉

SELECT i.id, t.title 
FROM info i, titles t 
WHERE t.id = i.id 
ORDER BY i.id ASC; 

不要忘了,你會想一致奧德的ORDER BY條款響應整個應用程序的一生。

而且您發佈的代碼是次優:

NSString *query = @"<the statement above>"; 
self.arrPeopleInfo = [self.dbManager loadDataFromDB:query]; 
+1

可能最好避免使用「id」這個名字。 – 2014-09-22 12:06:02

+0

@HotLicks只要OP知道它不應該被用作宿主代碼中變量的名稱,我就不會看到它的危害。 – trojanfoe 2014-09-22 12:07:44

+0

SQLite [支持外鍵約束](http://www.sqlite.org/foreignkeys.html)。 – 2014-09-22 12:52:56

相關問題