еще один EXC_BAD_ACCESS - PullRequest
       6

еще один EXC_BAD_ACCESS

1 голос
/ 21 февраля 2011

Я исправил ошибку моего последнего вопроса, но мой код поднял еще один EXC_BAD_ACCESS

на

const char *sqlStatement = [NewData UTF8String];

полный код

sqlite3 *database;
// Setup some globals
NSString *databaseName = @"test.sql";

// Get the path to the documents directory and append the databaseName
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString * databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
[databasePath retain];
sqlite3_stmt *compiledStatement;

NSString * TheNewText = self.animalDesciption.text; 
[TheNewText retain];

NSString * the_user = AnimalName ;
[ the_user retain];

NSString *NewData = [NSString stringWithFormat:@"%@%@%@%@", @"Update animals set description = ",TheNewText , " Where name =  ",the_user];

[NewData retain] ;

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {

    const char *sqlStatement = [NewData UTF8String];



    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL)== SQLITE_OK) {

        sqlite3_reset(sqlStatement);
    }

Ответы [ 2 ]

0 голосов
/ 21 февраля 2011

Вы пытались выделить и запустить NSString?

NSString *NewData = [[NSString alloc] initWithFormat:@"%@%@%@%@", @"Update animals set description = ",TheNewText , " Where name =  ",the_user];

и не сохранили его?

0 голосов
/ 21 февраля 2011

Могу поспорить, что строка будет собрана в результате автоматического запуска.Посмотрите в документах UTF8String, они предлагают скопировать строку, чтобы обеспечить ее длительность после этой точки.

Мое реальное предложение, после некоторых размышлений, состоит в том, чтобы избавиться от присвоения переменной ступеньки.

Я бы сказал, используйте это так:

if(sqlite3_prepare_v2(database, [NewData UTF8String], -1, &compiledStatement, NULL)== SQLITE_OK) {

        sqlite3_reset(compiledStatement);

Примечание изменение в операторе сброса.Это может быть вашей реальной проблемой, ваш код пытается выполнить строку вместо подготовленного оператора sqlite.

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