Вопрос SQlite, импорт нескольких записей - PullRequest
1 голос
/ 02 марта 2010

Хорошо, поэтому я делаю успехи с момента моего последнего вопроса. Мой вопрос теперь намного проще, или, по крайней мере, я чётче понимаю, каков мой вопрос. В моем AppDelegate у меня есть этот код для чтения данных из моей базы данных:

-(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);

И это работает нормально. Он считывает из таблицы книг значения, полученные из двух столбцов после моего столбца идентификатора (который является первичным ключом). Таким образом, в приложении первое значение заполняет uitableview, и нажатие строки приводит вас к подробному представлению, где значение находится в следующем столбце в БД. Это все нормально, но мой вопрос о том, как импортировать несколько записей одновременно. Так что в моем подробном представлении мне нужно, чтобы было uitextview, и мне нужно как-то изменить свой SQL-запрос на что-то вроде

"select * from books WHERE column = X"

где X будет номером набора, который я буду применять к пакету записей, которые я хочу отобразить все вместе в uitextview. Разве я не могу это сделать? Рисовать из столбца, который не обязательно уникален, или из первичного ключа? Эта партия записей, конечно, будет связана с исходным значением в uitableviewcell. Я знаю, что это очень просто и легко сделать, я просто не могу понять, как это сделать! Так что, если кто-то может понять это и помочь мне, это будет очень признательно! Спасибо

Редактировать: Дополнение

Хорошо, поэтому проблема, с которой я сталкиваюсь (и это может быть просто структура моей базы данных или что-то в этом роде) состоит в том, что этот один запрос подходит для всех подходов, просто не делая это для меня. В моем приложении мне нужно иметь 1 uitableview, который заполняется данными из таблицы в моей базе данных, а затем еще одно представление таблицы, которое детализируется оттуда, которое представляет номера глав, относящиеся к разделу, на который щелкнули в первом uitablevew, и это также из другая таблица в базе данных, а затем, наконец, подробный вид, который показывает несколько записей одновременно в uitextview, все, что касается главы, выбранной во втором uitableview, снова из другой таблицы в базе данных. Так что моя проблема в том, что мне не нравится этот подход, я попал в то место, где я делаю запрос, говорящий «выбрать * и просто получить следующие два значения, которые вы найдете». Я должен быть в состоянии сделать свои запросы более конкретными, и не только в одной таблице, но и в нескольких. Означает ли это, что я могу настроить несколько операторов const char *sqlStatement = и привязать их конкретно к нужному выводу, который мне нужен? Если бы вы могли просто показать, как эти части сочетаются друг с другом, это было бы очень ценно. Спасибо

1 Ответ

1 голос
/ 02 марта 2010

изменить вышеуказанный запрос

const char * sqlStatement = "выбрать * из книг";

как это

const char * sqlStatement = [[NSString stringWithFormat: @ "выбрать * из книг, где столбец =% @", X] UTF8String];

если есть вопросы, пожалуйста, ответьте!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...