| Название: вставка строк в базу данных с кавычками (как проескейпить ?) Отправлено: 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() и всё зашибись, просто тупил уже к концу рабочего дня :-) |