2010-03-02 43 views
1

好的,所以自從我上一個問題以來,我正在取得進展。我的問題現在更簡單了,或者至少我更清楚地明白我的問題是什麼。在我的AppDelegate我有這個代碼從我的數據庫中讀取數據:SQlite查詢問題,導入多條記錄

-(void) readFromDatabase { 
// Setup the database object 
sqlite3 *database; 

// Init the Array 
sections = [[NSMutableArray alloc] init]; 

// Open the database from the users filessytem 
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
    // Setup the SQL Statement and compile it for faster access 
    const char *sqlStatement = "select * from books"; 
    sqlite3_stmt *compiledStatement; 
    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 
     // Loop through the results and add them to the feeds array 
     while(sqlite3_step(compiledStatement) == SQLITE_ROW) { 
      // Read the data from the result row 
      NSString *aChapter = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]; 
      NSString *aSection = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)]; 



      // Create a new object with the data from the database 
      Text *text = [[Text alloc] initWithChapter:aChapter verse:aSection]; 

      // Add the object to the Array 
      [sections addObject:text]; 

      [text release]; 
     } 
    } 
    // Release the compiled statement from memory 
    sqlite3_finalize(compiledStatement); 

} 
sqlite3_close(database); 

而且,這是工作正常。它正在從books表中讀取來自id列(這是主鍵)後兩列的值。所以在應用程序中,第一個值是填充一個uitableview,並按下該行將您帶到詳細視圖,其中值來自db中的下一列。這一切都很好,但我的問題是關於如何一次導入多個記錄。所以在我的詳細視圖,我需要那裏是一個UITextView,我需要我的SQL查詢以某種方式更改爲類似

"select * from books WHERE column = X" 

,其中X是我將適用於批量的記錄我要定數在uitextview中一起顯示。我不能那樣做嗎?從不一定唯一的列或主鍵繪製?那批記錄當然會與uitableviewcell中的原始值相關聯。我知道這是一件非常簡單而容易的事,我無法弄清楚如何去做!所以如果任何人都可以理解這一點,並幫助我,這將是非常感謝!由於

編輯:加法

好了,所以我遇到了,(這可能只是我的數據庫什麼的結構)的問題是,這一個查詢適合所有的辦法只是心不是這樣做對我來說。在我的應用程序中,我需要有1個可用視圖,該視圖用我數據庫中的表中的數據填充,然後再從那裏向下鑽取表示視圖,該視圖代表特定於第一個uitablevew中單擊的部分的章節編號,那也是從數據庫中的另一個表格,最後是一個在uitextview中同時顯示多個記錄的詳細視圖,所有這些處理在第二個uitableview中選擇的章節,再次從數據庫中的另一個表格處理。所以我的問題是,我不喜歡這種方法,我已經讓自己進入我在哪裏做一個查詢說「選擇*,只是得到你找到的下兩個值」有點兒。我需要能夠使我的查詢更具體,而不是隻在一個表中,但多個。這是否意味着我可以設置多個const char *sqlStatement =聲明並將它們專門鏈接到我需要的所需輸出?如果你可以展示這些作品是如何融合在一起的,那將非常感激。由於

回答

1

改變上述查詢

爲const char *的SQLStatement = 「從書籍中選擇*」;

這樣

常量字符*的SQLStatement = [[NSString的stringWithFormat:@ 「選擇從書本*其中柱=%@」,X] UTF8字符串];

如有問題請回復!

+0

嘿扎克,謝謝你的幫助。我認爲這個查詢會起作用,現在它只是一個適合的問題。你介意我是否問了幾個問題來解決我的問題?我在上面添加更新以顯示我在哪裏。非常感謝 – Steve 2010-03-02 14:14:41