Русские буквы и несколько вопросов

Обсуждение возникших проблем, предложений и ошибок MyDAC компонентов
imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

Re: Русские буквы и несколько вопросов

Сообщение imobile » Вс 12 авг 2012 13:42

Как правильно использовать myDump?
Сохраняю:

Код: Выделить всё

if (FolderDialog1->Execute())
{
MyDump1->Connection->Close();
MyDump1->Connection->Options->Charset="";
MyDump1->Connection->Options->UseUnicode=true;
MyDump1->TableNames="";
AnsiString fn=FolderDialog1->Directory+"\\conv.bin";
 ProgressBar1->Position=0;
MyDump1->BackupToFile(fn);
MyDump1->Connection->Close();

}
Восстанавливаю:

Код: Выделить всё

void __fastcall TForm2::Button31Click(TObject *Sender)
{
if (OpenDialog1->Execute()) {
   MyDump1->Connection->Close();
MyDump1->Connection->Options->Charset="";
MyDump1->Connection->Options->UseUnicode=true;
MyDump1->TableNames="";
AnsiString fn=OpenDialog1->FileName;
 ProgressBar1->Position=0;
MyDump1->RestoreFromFile(fn);
ProgressBar1->Position=0;
}
}
В результате абракадабра. Раньше вроде так же делал, но было все ок, хотя не уверен. Все базы utf8

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Русские буквы и несколько вопросов

Сообщение AndreyZ » Пн 13 авг 2012 08:46

На данный момент компонент TMyDump не поддерживает выгрузку юникод данных при включенной опции UseUnicode. Если UseUnicode=True данные кодируются в формат UTF16. Когда производится процесс выгрузки данных в файл, данные хранятся в формате UTF8, который не совместим с UTF16. Поэтому Вам необходимо выключать опцию UseUnicode и устанавливать свойство Charset в UTF8 перед выгрузкой данных в файл.
Мы исследуем данный вопрос и мы постараемся добавить возможность выгрузки юникод данных при UseUnicode=True в одной из следующих версий MyDAC.

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

Re: Русские буквы и несколько вопросов

Сообщение imobile » Чт 16 авг 2012 10:45

Ничего не получается. :cry: Пробовал и false и true и сначала false, а потом true и наоборот и использовал charset=utf8 и"" ничего не помогает, все равно при востановлении абракадабра, иногда ????????? Как должен работать вышеприведенный код? Ведь у меня работало, или надо откатываться к предыдущим версиям, я не знаю как.

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Русские буквы и несколько вопросов

Сообщение AndreyZ » Чт 16 авг 2012 12:15

Пример ниже демонстрирует корректную работу с компонентом TMyDump:

Код: Выделить всё

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  MyConnection1->Options->UseUnicode = True;
  MyConnection1->Open(); // подключаемся к базе созданной с CHARACTER SET utf8
  MyConnection1->ExecSQL("DROP TABLE IF EXISTS test", NULL, 0);
  MyQuery1->Connection = MyConnection1;

  MyQuery1->SQL->Clear();
  MyQuery1->SQL->Add("CREATE TABLE test(");
  MyQuery1->SQL->Add("id INT(11) AUTO_INCREMENT PRIMARY KEY,");
  MyQuery1->SQL->Add("txt VARCHAR(40))");
  MyQuery1->SQL->Add("ENGINE = INNODB");
  MyQuery1->Execute();

  MyQuery1->SQL->Text = "SELECT * FROM test";
  MyQuery1->Open();
  MyQuery1->Append();
  MyQuery1->FieldByName("txt")->AsString = L"ῠῲ₰"; // юникод данные
  MyQuery1->Post();

  MyConnection1->Close();
  MyConnection1->Options->UseUnicode = False; // перед дампом выключаем UseUnicode
  MyConnection1->Options->Charset = "utf8"; // и устанавливаем Charset в utf8
  MyConnection1->Open();
  MyDump1->Connection = MyConnection1;
  MyDump1->TableNames = "test";
  MyDump1->BackupToFile("С:\\bk.bk"); // выгружаем данные в файл
  MyDump1->RestoreFromFile("С:\\bk.bk"); // загружаем данные из файла в базу

  MyConnection1->Close();
  MyConnection1->Options->UseUnicode = True;
  MyConnection1->Open();
  MyQuery1->Open();
  ShowMessage(MyQuery1->FieldByName("txt")->AsString); // проверяем что данные корректные
}

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

Re: Русские буквы и несколько вопросов

Сообщение imobile » Чт 16 авг 2012 12:43

Ура!!!
Теперь я владею тайными заклинаниями.

спасибо!!!

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Русские буквы и несколько вопросов

Сообщение AndreyZ » Чт 16 авг 2012 12:51

Пожалуйста.

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

Re: Русские буквы и несколько вопросов

Сообщение imobile » Чт 16 авг 2012 17:39

А как на счет mybuilder?
1.Этот компонент, как я понял, для того, чтобы в программе пользователи могли интерактивно построить запрос. Именно то, о чем я мечтал. Но когда я выполняю запрос, то данные UTF8 отображается ??????, как включить поддержку уникода?
2. Как сделать русский язык для интерфейса?
3.Где проголосовать за развитие этого класса, очень хочется чтоб он приблизился по функциональности к dbforge?

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Русские буквы и несколько вопросов

Сообщение AndreyZ » Пт 17 авг 2012 07:43

MyBuilder является устаревшим продуктом и более не развивается.
На данный момент MyDAC поддерживает интеграцию с dbForge Fusion for MySQL (начиная с CodeGear RAD Studio 2007). Более подробную информацию о dbForge Fusion for MySQL Вы можете найти здесь: http://www.devart.com/dbforge/mysql/fusion
Также мы планируем добавить интеграцию MyDAC с dbForge Studio for MySQL в будующем.

Закрыто