положить строку в char для оператора SQL? - PullRequest
0 голосов
/ 11 июля 2011

я использую xcode, и у меня есть вопрос по задаче c, возможно, вы можете мне помочь.

моя функция получает строку, которую она берет и помещает в выражение sql, и я не уверен, какчтобы сделать это, потому что оператор является символом, и я нашел много способов преобразовать его.

я делаю это:

sql_for_event= " SELECT basic_pic,spriteSheet,sound FROM DataBase WHEN event= %c",[awaking_event UTF8String] ;

когда sql_for_event является оператором, а awaking_event является NSStringдобраться до функции.Как я могу это сделать ?

спасибо большое.

Ответы [ 3 ]

2 голосов
/ 11 июля 2011

Ваш подход не совсем корректен.Попробуйте что-то вроде:

char buffer[2048];
sprintf(buffer,
    "SELECT basic_pic,spriteSheet,sound FROM DataBase WHEN event='%s'",
    [awaking_event UTF8String]
);

В вашем подходе не хватает:

  1. Правильное распределение памяти (вы не можете просто присвоить строковую константу char* и затем изменить ее.
  2. Ваш SQL, вероятно, нуждается в '', если вы имеете дело с символьными полями.
  3. С %c вы получаете только байт (символ) данных, а не массив символов.
2 голосов
/ 11 июля 2011

Вы также можете использовать sqlite API sqlite3_bind_text:

sql_for_event= " SELECT basic_pic,spriteSheet,sound FROM DataBase WHEN event= ?";
if (sqlite3_prepare_v2(db, sql, -1, &statement, NULL) == SQLITE_OK) {       
    sqlite3_bind_text(statement, 1, [awaking_event UTF8String],-1,SQLITE_TRANSIENT);
    //next actions with statement - sqlite3_step(statement) etc
}
2 голосов
/ 11 июля 2011

Спецификатор% c печатает только один char, и он должен быть частью вызова sprintf в вашем сценарии.Более простой способ будет

sql_for_event= [[NSString stringWithFormat:@"SELECT basic_pic,spriteSheet,sound FROM DataBase WHERE event= '%@'",awaking_event] UTF8String];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...