Здравствуйте, JTOne, Вы писали:
RDbStoreDatabase Db;
....
инициализация БД, открытие файлика
....
RDbView Set;
TBuf<128> query,val;
query.Copy(_L("select * from mytable where mycol=3"));
// выполнение запроса
User::LeaveIfError(Set->Prepare(Db,TDbQuery(query,EDbCompareNormal)));
User::LeaveIfError(Set->EvaluateAll());
// получение в val первое значение нужного столбца
Set.FirstL();
if( Set.AtRow() ) // проверка на наличие
{
Set.GetL();
val.Copy(Set.ColDes(2));
}
JTO>Подскажите как правильно зделать выборку из базы,
JTO>в код который приважу я переделал из какого то примера на который нашел на сайт нокии, немного переделал под свою задачу, но код не работатет
JTO>Мне нужно получить только первые значение из всей выборки?
JTO>CDesCArrayFlat* CBookDb::GetNameByPhone(const TDesC& Phone)
JTO> {
JTO> TPtrC number;
JTO> TBuf<KDescriptionMaxLength> description;
JTO> TBuf<KBookItemMaxLength> rowText;
JTO> _LIT(KSelect, "SELECT ");
JTO> _LIT(KFrom, " FROM ");
JTO> _LIT(KWhere, " WHERE ");
JTO> _LIT(KLike, " LIKE '");
JTO> _LIT(KOrderBy, "' ORDER BY ");
JTO> _LIT(KDot, ", ");
JTO> _LIT(KRavno, "=");
JTO> TBuf<KCustomSqlMaxLength> sqlStr;
JTO> sqlStr.Append(KSelect);
JTO> sqlStr.Append(KFam);
JTO> sqlStr.Append(KFrom);
JTO> sqlStr.Append(KTelZhTable);
JTO> sqlStr.Append(KWhere);
JTO> sqlStr.Append(KNomer);
JTO> sqlStr.Append(KRavno);
JTO> sqlStr.Append(Phone);
JTO> CDesCArrayFlat* resultArray =
JTO> new (ELeave)CDesC16ArrayFlat(KArrayGranularity);
JTO> CleanupStack::PushL(resultArray);
JTO> // Create a view on the database
JTO> RDbView view;
JTO> User::LeaveIfError(
JTO> view.Prepare(iBookDb, TDbQuery(sqlStr), view.EReadOnly));
JTO> User::LeaveIfError(view.EvaluateAll());
JTO> CDbColSet* colSet = view.ColSetL();
JTO> CleanupStack::PushL(colSet);
JTO> // Append each result row to array
JTO> for (view.FirstL(); view.AtRow(); view.NextL())
JTO> {
JTO> rowText.Zero();
JTO> view.GetL();
JTO> number.Set(view.ColDes(colSet->ColNo(KFam)));
JTO> rowText.Append(number);
JTO> resultArray->AppendL(rowText);
JTO> }
JTO> CleanupStack::PopAndDestroy(colSet);
JTO> view.Close();
JTO> CleanupStack::Pop(resultArray);
JTO> return resultArray;
JTO> }
JTO>
JTO>