Название: вставка строк в базу данных с кавычками (как проескейпить ?) Отправлено: burunduk от Март 15, 2007, 00:26 не могу что-то найти решения
QSqlDatabase::database().exec(query); где query строка и формируется динамически использовать prepare() + addBindValue() ? что-то попробывал так, код возврата - истина, а база не меняется я делаю инсерт запрос Название: вставка строк в базу данных с кавычками (как проескейпить ?) Отправлено: crocus от Март 15, 2007, 01:41 Такая же ерунда была, попробуй использовать не query.exec, а через модель типа так:
Код:
Название: вставка строк в базу данных с кавычками (как проескейпить ?) Отправлено: burunduk от Март 15, 2007, 10:34 Нифига так не ескейпит:
"ERROR: syntax error at or near "sos" at character 115 QPSQL: Unable to create query" 'sos' пишу в текстовом поле в одинарных кавычках собираю на Qt 4.1.4 Название: вставка строк в базу данных с кавычками (как проескейпить ?) Отправлено: Вудруф от Март 15, 2007, 14:17 /'
Или связанные переменные Название: вставка строк в базу данных с кавычками (как проескейпить ?) Отправлено: alexis от Март 15, 2007, 21:20 Ну а что мешает в генерируемый запрос вместо реальных данных напихать плейсхолдеров?
И попутно, вести массив данных к ним. что-то в этом роде, только у меня тут полностью запрос динамически собирается. Код:
--- sql = QString( "SELECT %1 FROM %2" ).arg( fileds.join(", ") ).arg( table ); sql.append(" WHERE "); sql.append( Object::access() ); if ( wheres.count() ) { sql.append(" AND ( "); sql.append( wheres.join( " " ) ); sql.append( " ) " ); } sql.append( groups ); sql.append( orders ); sql.append( limit ); sql.append( offset ); if ( opt.contains("explain") ) explainQuery( sql ); QSqlQuery query( db ); query.prepare( sql ); for( QList<QVariant>::Iterator it = binds.begin(); it != binds.end(); ++it ) query.addBindValue( (*it) ); [/code] Название: вставка строк в базу данных с кавычками (как проескейпить ?) Отправлено: burunduk от Март 16, 2007, 12:45 спасибо за поддержку )
prepare() + addBindValue() + exec() и всё зашибись, просто тупил уже к концу рабочего дня :-) |