Перейти до основного вмісту

Драйвер MySQL для Qt (Linux)


Для того проекту, де був потрібен доступ до БД MySQL, прийшов час реалізуватися в Linux. Але після переносу файлів, виникла та ж проблема - драйвер. Базова система Ubuntu 11.04 і сервер БД MySQL 5.1.???. Первинних файлів бази даних, як звичайно це буває, у мене не виявилося, тому викачав ось звідси:
http://download.softagency.net/mysql/Downloads/

Розпаковуємо куди завгодно, скажімо в /home/mysql.

Запускаємо термінал та переходимо туди де встановлено Qt в:


/QtSDK/Desktop/Qt/версія ???/gcc/bin/qmake -o Makefile
«INCLUDEPATH+=/home/mysql/usr/include/mysql» «LIBS+= -L /home/mysql/usr/lib/mysql -lmysqlclient» mysql.pro
make


Якщо все пройшло добре копіюємо із /QtSources/4.7.3/src/plugins/sqldrivers/mysql/ файл libqsqlmysql.so в /QtSDK/Qt/4.7.3/gcc/plugins/sqldrivers/


****** Редакція 2017 року *******

Ubuntu 16.04 LTS 64-bit
Qt 5.8
MySql 5.5.53 - http://download.softagency.net/mysql/Downloads/MySQL-5.5/MySQL-devel-5.5.53-1.linux2.6.x86_64.rpm розпакований в /home/ev/Downloads/mysql



cd /home/ev/Qt/5.8/Src/qtbase/src/plugins/sqldrivers/mysql
/home/ev/Qt/5.8/gcc_64/bin/qmake -o Makefile "INCLUDEPATH+=/home/ev/Downloads/mysql/include/mysql" "LIBS+=-L /home/ev/Downloads/mysql/lib64/mysql -lmysqlclient" mysql.pro
make


Якщо все добре ;), готовий файл драйвера libqsqlmysql.so зявиться тут - /home/ev/Qt/5.8/Src/qtbase/plugins/sqldrivers/. Залишається його перенести сюди - /home/ev/Qt/5.8/gcc_64/plugins/sqldrivers/





Коментарі

Популярні дописи з цього блогу

Qt та Excel. Робота з ячейками.

Для доступу до всіх властивостей і вмісту ячійок у Excel використовуються два об'єкти Range і Cells. Між ними є тільки одна відмінність (крім назви) - перший об'єкт забезпечує доступ до області ячійок та його аргументом є строка. QAxObject *myRange; myRange = sheetAct->querySubObject("Range (QVariant)", "A1:D3"); myRange->dynamicCall("Select()"); / / виділяємо діапазон ячійок Cells забезпечує доступ тільки до однієї ячійки і аргументом є номер рядка і стовпця. Таким чином запис виду: QAxObject *myRange; myRange = sheetAct->querySubObject("Range(QVariant)", "A2"); і QAxObject *myCells; myCells = sheetAct->querySubObject("Cells (Int, Int)", 1, 2); є рівнозначною. Щоб визначити реальну адресу ячійки або діапазону ячійок можна скористатися властивістю Address, яке має наступні параметри: RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo. myRange = sheetAct->querySubObject(...

QString в HEX и обратно

Спочатку з QString робимо QByteArray. Зауважимо, якщо у вас по тексту тільки латинські букви цілком підійде варіант з .toUtf8(). Якщо ж присутня і кирилиця - обов'язково використовуємо .toLocal8Bit(). QString strA = "Some text"; QByteArray bA = strA.toLocal8Bit().toHex(); Перетворення QByteArray в початковий текст має такий вигляд: QString strB = QString::fromLocal8Bit(QByteArray::fromHex(bA))); Цікаво, що якщо ми для зберігання записали отриманий Нех куди-небудь, наприклад, в файл або базу даних у вигляді текстового рядка, то для зворотного перетворення цей рядок потрібно додатково перетворити в QByteArray. QString strA2 = QString::fromUtf8(bA); QByteArray bB = strA2.toUtf8(); QString strB = QString::fromLocal8Bit(QByteArray::fromHex(bB)));

Qt Округлення до певного розряду

Округлення - тривіальна задача в математиці, але в Qt немає функції округлення до певного розряду. Проте в QtMath є такі функції як qFloor (qreal) і QCeil (qreal), в результаті яких int. А також можна використовуючи round (double), отримати double. Дуже швидко я знайшов ось цей ресурс звідки взяв вихідну формулу. Вона без сумніву працює, але дає результати, які не відповідаю моїм очікуванням: toRound(187.156, 2); //187.15 toRound(187.156, 1); //187.1 toRound(187.156, 0); //187 toRound(187.156, -1); //180 toRound(187.156, -2); //100 Після невеликої корекції самої функції, її підсумковий варіант виглядає так: double wcsv::toRound(double val, int r) {   double outpValue;   double tempVal;   tempVal=val*pow(10,r);   if (double(int(tempVal))+0.5==tempVal){     int(tempVal)%2 == 0       ? outpValue=double(qFloor(tempVal))/pow(10,r)       :outpValue=d...