راه اندازی پایگاه داده SQL در Qt

ماژول Qt SQL از درایورها برای ارتباط با پایگاه داده‌های مختلف استفاده می‌کند. از آنجایی که ماژول Qt SQL مستقل از انواع پایگاه داده است، اهمیتی ندارد که به چه نوع پایگاه داده‌ای متصل شود. چون کد منحصر به فرد هر نوع پایگاه داده داخل درایور قرار دارد. به گفته سایت رسمی، چندین درایور همراه مجموعه Qt هستند، باقی درایورها نیز می‌توانند به صورت جداگانه به آن افزوده شوند. شما آزادانه می‌توانید درایورهای منحصر به فرد خودتان را توسط سورس کد موجود درسایت رسمی Qt بنویسید.

پایگاه داده های پشتیبانی شده

QDB2 نوع IBM (نسخه 7.1 و بالاتر)
QMYSQL / MARIADB MySQL یا MariaDB (نسخه 5.6 یا بالاتر)
QOCI نوع اوراکل (نسخه 12.1 و بالاتر)
QODBC نوع دیتابس مایکروسافت ODBC
QPSQL نوع PostgreSQL (نسخه 7.3 و بالاتر)
QSQLITE نسخه 3 نوع SLite
  • پایگاه داده SQLite یک پایگاه داده سبک و بدون نیاز پیکربندی است، که برای اجرا نیازی به سرور یا نصب ندارد. این پایگاه داده تمام پلتفرم ها را پوشش داده و پشتیبانی می‌کند. در بیشتر مواقع این پایگاه داده برای استفاده در نرم افزارها انتخاب می‌گردد.
  • برای تهیه یک افزونه‌ی درایور، باید یک کتابخانه سمت کاربر مناسب (client library)، برای سیستم مدیریت پایگاه داده (DBMS) داشته باشید. این کتابخانه‌ها مسئول ارتباط سطح پایین با DBMS هستند.
  • مطمئن باشید کتابخانه صحیح برای معماری 32 یا 64 بیتی را نصب کرده باشید.
راه اندازی پایگاه داده SQL در QT

تهیه افزونه QMYSQL ویندوز برای QT-6

برای شروع کار به ترتیب زیر باید عمل کنیم:

بعد از نصب، فایل‌های زیر و ادرس دقیق آنها را بررسی کنید. انتخاب mysql یا mariadb بستگی به شما دارد:

  • /lib/libmysql.lib
  • /lib/libmysql.dll
  • /include/mysql.h

و برای mariadb:

  • /lib/libmariadb.lib
  • /lib/libmariadb.dll
  • /include/mysql.h

یک پوشه به نام دلخواد ایجاد کرده و از طریق خط فرمان Qt (بعنوان مثال Qt 6.2.1 (MinGW 8.1.0 64-bit)) به مسیر آن بروید:

mkdir build-sqldrivers
cd build-sqldrivers

qt-cmake -G Ninja <qt_installation_path>\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=<qt_installation_path>\<platform> -DMySQL_INCLUDE_DIR="C:\mysql-8.0.22-winx64\include" -DMySQL_LIBRARY="C:\mysql-8.0.22-winx64\lib\libmysql.lib"
cmake --build .
cmake --install .
ساخت درایور mysql برای qt

بررسی بخش‌های خط فرمان:

  • در صورتی که خطایی بابت cmake یا ninja مشاهده کردید، از ثبت شدن آدرس آنها در Environment Variable مطمئن شوید.
  • بخش qt_installation_path\Src\qtbase\src\plugins\sqldrivers، به محل پوشه sqldrivers در سیستم شما اشاره دارد.
  • در صورتی که سورس کد src همراه Qt نصب نشده باشد. بایستی از طریق Qt installer آن را نصب کنید.
  • بخش DCMAKE_INSTALL_PREFIX به محل پوشه C:\Qt\6.2.1 اشاره خواهد داشت. در صورتی که در سیستم شما در محل دیگری نصب شده است، آن را وارد کنید.
  • بخش DMySQL_INCLUDE_DIR و DMySQL_LIBRARY به ترتیب به محل پوشه include و فایل libmysql.lib در پوشه lib اشاره خواهد داشت.

بعنوان مثال:

qt-cmake -G Ninja C:\Qt\6.2.1\Src\qtbase\src\plugins\sqldrivers -DCMAKE_INSTALL_PREFIX=C:\Qt\6.2.1 -DMySQL_INCLUDE_DIR="C:\MySQL\MySQLConnectorC6.1\include" -DMySQL_LIBRARY="C:\MySQL\MySQLConnectorC6.1\lib\libmysql.lib"
حل مشکل QMYSQL driver not loaded
نصب sqldriver برای qt-6

در هنگام انتشار نرم افزار خود مطمئن شوید که libmysql.dll یا  libmariadb.dll را در بسته‌ی نصب خود قرارداده‌اید. این فایل باید در پوشه‌ای قرارداده شود که فایل اجرایی برنامه شما آنجا قرار دارد. همچنین libmysql.dll به کتابخانه های MSVC runtime نیاز دارد که توسط vcredist.exe میتوانند نصب شوند.

خطایابی و اتمام مراحل نصب

  1. برای تست کارکرد درایور، ابتدا MySQL Community Server یا MariaDB Server را نصب کنید و یک پایگاه داده برای تست اتصال تدارک ببینید.
  2. در پروژه Qt بعد از افزودن QT += sql  به فایل pro در روت اصلی، کد زیر را بعنوان نمونه اجرا کنید.
QSqlDatabase db (QSqlDatabase::addDatabase ("QMYSQL"));
db.setHostName ("localhost");
db.setDatabaseName ("db_name");
db.setUserName ("db_user");
db.setPassword ("db_pass");
if(db.open ()) {
   qDebug() << "Success!";
} else {
   qDebug() << db.lastError ().text ();
}
پروژه Qt اتصال به Mysql
  1. درصورت مشاهده خطای "QMYSQL driver not loaded" موارد زیر را بررسی کنید:
    • qsqlmysql.dll و qsqlmysql.debug را از محل build-sqldrivers\plugins\sqldrivers به پوشه C:\Qt\6.2.1\mingw81_64\bin و C:\Qt\6.2.1\mingw81_64\plugins\sqldrivers کپی کنید.
تهیه افزونه QMYSQL ویندوز برای QT-6
    • فایل libmysql.dll را از محل نصب mysql یا mariadb به پوشه Windows سیستم عامل کپی کنید.
انتقال libmysql.dll به پوشه Windows
  1. درصورت مشاهده خطای در مرحله cmake --build که مربوط به sqlite و odbc، در صورتی که فقط در حال پیکربندی mysql/mariadb بودید، فایل CmakeCache را ویرایش کنید.
حل مشکل عدم build درایور mysql
  1. درصورت استفاده از msys2 بعنوان مدیریت بسته‌ها، برای فعال سازی درایور باید به روز رسانی های مربوطه را در آدرس های زیر انجام دهید:
    • دو فایل ایجاد شده را به صورت دستی به آدرس share\qt6\plugins\sqldrivers کپی کنید.
    • فایل‌های نصب‌شده در پوشه پیش فرض Qt\6.2.1\lib\cmake\Qt6Sql را با آدرس Qt\6.2.1\mingw81_64\msys2\mingw64\lib\cmake\Qt6Sql همگام ساز کنید. توجه کنید ادرس های فوق بستگی به محل نصب شما دارد.
0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *