راه اندازی پایگاه داده 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 بیتی را نصب کرده باشید.
تهیه افزونه QMYSQL ویندوز برای QT-6
برای شروع کار به ترتیب زیر باید عمل کنیم:
- فایل های نصبی mariadb-connector-c-3.1.11-win64.msi یا mysql-installer-web-community-8.0.22.0.msi را دانلود کرده و در مراحل نصب مطمئن شوید که MySQL C Connector با مطابق با نسخه 32 یا 64 بیتی Qt نصب شده باشد.
- در صورتی که installer شامل MySQL C Connector نبود، میتوانید از MySQL Connector/C و یا MariaDB C Connector به صورت جداگانه آن را دانلود نمایید.
بعد از نصب، فایلهای زیر و ادرس دقیق آنها را بررسی کنید. انتخاب 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 .
بررسی بخشهای خط فرمان:
- در صورتی که خطایی بابت 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"
در هنگام انتشار نرم افزار خود مطمئن شوید که libmysql.dll یا libmariadb.dll را در بستهی نصب خود قراردادهاید. این فایل باید در پوشهای قرارداده شود که فایل اجرایی برنامه شما آنجا قرار دارد. همچنین libmysql.dll به کتابخانه های MSVC runtime نیاز دارد که توسط vcredist.exe میتوانند نصب شوند.
خطایابی و اتمام مراحل نصب
- برای تست کارکرد درایور، ابتدا MySQL Community Server یا MariaDB Server را نصب کنید و یک پایگاه داده برای تست اتصال تدارک ببینید.
- در پروژه 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 (); }
- درصورت مشاهده خطای "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 کپی کنید.
-
- فایل libmysql.dll را از محل نصب mysql یا mariadb به پوشه Windows سیستم عامل کپی کنید.
- درصورت مشاهده خطای در مرحله cmake --build که مربوط به sqlite و odbc، در صورتی که فقط در حال پیکربندی mysql/mariadb بودید، فایل CmakeCache را ویرایش کنید.
- درصورت استفاده از msys2 بعنوان مدیریت بستهها، برای فعال سازی درایور باید به روز رسانی های مربوطه را در آدرس های زیر انجام دهید:
- دو فایل ایجاد شده را به صورت دستی به آدرس share\qt6\plugins\sqldrivers کپی کنید.
- فایلهای نصبشده در پوشه پیش فرض Qt\6.2.1\lib\cmake\Qt6Sql را با آدرس Qt\6.2.1\mingw81_64\msys2\mingw64\lib\cmake\Qt6Sql همگام ساز کنید. توجه کنید ادرس های فوق بستگی به محل نصب شما دارد.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.