Re: Как получить выборку из БД в симбиане?
От: visius  
Дата: 09.11.07 23:34
Оценка:
Здравствуйте, 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>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.