Доступ к объекту через базу данных SQLIte - PullRequest
0 голосов
/ 20 июня 2011

Я передаю объект методу, в котором я выполняю запрос.Мой метод:

-(BOOL)searchWordInDatabase:(NSString *)string
{
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory= [paths objectAtIndex:0];
NSString *path=[documentsDirectory stringByAppendingPathComponent:@"SymbolTalkLanguageElement.sqlite"];

//Open the database
//might have to make database as property
if(sqlite3_open([path UTF8String], &dataBase) ==SQLITE_OK)
{
    const char *sql="select ImageName from tblLanguageElement where Category= string";
    sqlite3_stmt *statement;

    if(sqlite3_prepare(dataBase, sql, -1, &statement, NULL) == SQLITE_OK)
    {
        while (sqlite3_step(statement) == SQLITE_ROW) 
        {
            NSLog(@"%@",[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]);
            //[list addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]];
            return YES;
        }

    }



}
return NO;

}

Но я не получаю значение String в запросе.Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 20 июня 2011

В вашем запросе есть ошибка. Вы не можете подставить такую ​​строку. Сделайте это следующим образом.

NSString *sqlStr = [NSString stringWithFormat:@"select ImageName from tblLanguageElement where Category = '%@'", string];
char *sql = (char *)[sqlStr UTF8String];
1 голос
/ 21 июня 2011

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

 const char *sql = "select ImageName from tblLanguageElement where Category = ?";
 sqlite3_stmt *statement;
 if(sqlite3_prepare(dataBase, sql, -1, &statement, NULL) == SQLITE_OK)
 {
      sqlite3_bind_text(statement, 1, [string UTF8String], -1, SQLITE_TRANSIENT);

      while (sqlite3_step(statement) == SQLITE_ROW) 
      {
           NSLog(@"%@",[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]);
           //[list addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]];
        return YES;
      }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...