crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Выборка из базы данных
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
inviZ Дата 18.6.2010, 11:28
 
Цитата(BRE @ 18.6.2010, 3:41) *
Так может проще использовать:
QByteArray QByteArray::toHex () const


Ха, точно, тупица я, не знал про этот метод)
AD Дата 17.6.2010, 19:59
 
Цитата(BRE @ 17.6.2010, 20:41) *
Так может проще использовать:
QByteArray QByteArray::toHex () const

Да! :) Я уже так и сделал! :)
BRE Дата 17.6.2010, 19:41
  Так может проще использовать:
QByteArray QByteArray::toHex () const
AD Дата 17.6.2010, 19:35
 
Цитата(inviZ @ 17.6.2010, 20:26) *
Смысл в том, что SQL Server
Цитата
<|p§=Ђ�Я

Например, '<' здесь это 0x3C, '|' - 0x7C, ну и так далее.
И клиент, который выдает тебе "0x3C7C70A73D8098DF", тоже аналогичным образом форматирует эти байты в удобном для тебя виде.

Фишка не в этом! :) Он и должен выдавать билибердовую строку, это ведь секретный ключ! ;) Дело в том, что в зависимости от кодировки, шестнадцатеричный код некоторых символов отличается, что есть очень плохо. А вот сейчас эти отличия нивелируются.
inviZ Дата 17.6.2010, 19:26
  Смысл в том, что SQL Server возвращает на твой запрос просто 8 байт данных. Естественно, если ты попытаешься представить их в виде строки, у тебя получится белиберда.

Цитата
<|p§=Ђ�Я

Например, '<' здесь это 0x3C, '|' - 0x7C, ну и так далее.
И клиент, который выдает тебе "0x3C7C70A73D8098DF", тоже аналогичным образом форматирует эти байты в удобном для тебя виде.
AD Дата 17.6.2010, 19:21
 
Цитата(inviZ @ 17.6.2010, 20:13) *
Пробуй.

Ты гений. СПАСИБО! :)
inviZ Дата 17.6.2010, 19:13
 
bool rt = query.exec(select_query);
query.next();
QByteArray bytes = query.value(0).toByteArray();

QString str = "0x";
foreach(quint8 b, bytes)
{
    str.append(QString("%1").arg((uint)b, 2, 16, QChar('0')));
}


Пробуй.
Litkevich Yuriy Дата 17.6.2010, 19:04
 
Цитата(AD @ 17.6.2010, 22:54) *
Так вот мне нужен результат, подобный тому, что я получаю в СУБД.
ты послушай проверь, как BRE советует
AD Дата 17.6.2010, 18:54
  Ладно, чтобы было понятно, вот результат выборки через СУБД и выборка программы.

Запрос
select cast(secretKey as binary(8)) as secretKey from dbo.DeviceList where secretKey <> '' and serialNumber = '22021   '

Результат СУБД SQL Server:
0x3C7C70A73D8098DF


программный код
bool rt = query.exec(select_query);
query.next();
QString str(query.value(0).toString());

Результат кода:
<|p§=Ђ�Я

Так вот мне нужен результат, подобный тому, что я получаю в СУБД.
BRE Дата 17.6.2010, 18:49
  Какая БД используется?
Этот запрос в sqlbrowser дает нужный результат?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 22.1.2021, 2:59