Мод компонентов dbMySQL, dbMySQL_Exec, dbMySQL_Query.
Что сделано:
1 Теперь все ошибки (так как и должно быть с кодом и описанием) выводятся в dbMySQL onError.
2 Добавлена точка InsertId в dbMySQL_Query и dbMySQL_Exec Которая содержит ID, сгенерированный последней операцией INSERT.
3 Удалены точки onError из dbMySQL_Query и dbMySQL_Exec (Все ошибки выводятся в dbMySQL onError)
4 В dbMySQL_Query и dbMySQL_Exec onResult добавлена выдача в поток количество изменённых полей. Событие происходит всякий раз при успешном выполнении запроса к базе данных (Теперь корректно)
Архив для стандартного компилятора - https://forum.hiasm.com/getfile/39139
Архив для компилятора от Netspirit. - https://forum.hiasm.com/getfile/39140
Архив с libmySQL.dll и libmysql-64.dll - https://forum.hiasm.com/getfile/39138
Установка:
1 Заменить файлы - hidbMySQL.pas, hidbMySQL_Exec.pas, hidbMySQL_Query.pas, MySQL.pas и mysqllib.pas в HiAsm\Elements\Delphi\code\
2 Заменить файлы - dbMySQL.ini, dbMySQL_Exec.ini и dbMySQL_Query.ini в HiAsm\Elements\Delphi\conf\
Редактировалось 4 раз(а), последний 2020-09-27 17:55:47
Этот топик читают: Гость
Ответов: 207
Рейтинг: 14
|
|||
карма: 2 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Joiner писал(а): некорректно работает с юникодом |
|||
карма: 26 |
|
Ответов: 207
Рейтинг: 14
|
|||
Netspirit писал(а): Мои - работают?Нет, c FPC-32U не работают. Даже соединение с базой не получалось, это меня и сподвигло вывести ошибки и разобраться в чем дело. Отличия в пакетах лишь в ToString и Share.ToString. После ряда изменений, соединение уже есть. И даже в базу инсертит через dbMySQL_Query, но не все. FPC-64 и FPC-64U - понятно, что работать не будут (libmysql.dll 32 bit) . Хватило б работающего и FPC-32U. |
|||
карма: 2 |
|
Ответов: 4628
Рейтинг: 749
|
|||
В mysqllib.pas надо тип PChar заменить на PAnsiChar. В компонентах добавить свойство для выбора кодировки соединения (Auto, ANSI, UTF-8). При установке соединения в коде вызвать mysql_set_character_set() или mysql_options() для установки кодировки соединения. Выполнять преобразования в/из этой кодировки при вызове функций libmysql. Попробую как-то сделать.
|
|||
карма: 26 |
| ||
Голосовали: | Joiner |
Ответов: 4628
Рейтинг: 749
|
|||
Joiner, выложил обновление пакета и компилятора. Там исправлены компоненты MySQL. Поддерживается Unicode и 64 бита. Нюанс - при указании кодировок в dbMySQL.Charset нет необходимости вставлять ручную конвертацию на уровне схемы (выполняется автоматически в коде).
Наличие в этом свойстве кодировки UCS2 не имеет смысла: Connection Character Sets and Collations писал(а): The character_set_client system variable cannot be set to certain character sets: ucs2 utf16 utf16le utf32 Attempting to use any of those character sets as the client character set produces an error Более того, и остальные пункты во многом бесполезны: ANSI-программы все равно не отобразят ничего, что отличается от текущей кодировки Windows или UTF-8, содержащей текст на "языке для программ, не поддерживающих Юникод". Unicode-программы - отобразят, но для них достаточно поставить по-умолчанию UTF-8 и в коде преобразовывать из неё: в какой кодировке не была бы БД, сервер сможет корректно её преобразовать в UTF-8, а компоненты на своей стороне - в кодировку компилятора (UTF-16). Редактировалось 1 раз(а), последний 2020-09-24 11:24:04 |
|||
карма: 26 |
| ||
Голосовали: | Joiner |
Ответов: 207
Рейтинг: 14
|
|||
Netspirit, Спасибо тебе огромное, за отзывчивость и за помощь. Очень выручил.
|
|||
карма: 2 |
|
Ответов: 207
Рейтинг: 14
|
|||
Добавлен архив для компилятора от Netspirit.
Исправлены ошибки для стандартного компилятора. |
|||
карма: 2 |
|
7