PDA

View Full Version : عدم لود شدن درايور ديتابيس



AriaGlobal
پنج شنبه 17 اسفند 1391, 22:31 عصر
با سلام،
دوستان من ميخام به ديتابيس SQL Server در شبکه وصل بشم و از درايور QODBC استفاده ميکنم اما وقتي کمپايل ميکنم درايور رو لود نميکنه و اين اررو پاين رو بم نشون میده :

QSqlDatabase: QODBC driver not loaded QSqlDatabase: available drivers: QSQLITE


براي حل اين مشکل چکار بايد بکنم ؟؟

aidinMC
پنج شنبه 17 اسفند 1391, 23:54 عصر
باید سورس qt رو نصب کنی بعد درایوی که میخوای رو کامپایل کنی...

AriaGlobal
جمعه 18 اسفند 1391, 00:01 صبح
باید سورس qt رو نصب کنی بعد درایوی که میخوای رو کامپایل کنی...

سورس Qt رو که نصب کردم درايور رو چطور بايد کمپايل کنم ؟ کجا هست دايور ؟

alamate_aoal
جمعه 18 اسفند 1391, 00:09 صبح
سلام

اول از همه باید پلاگین ODBC رو بسازید(کامپایل کنید) . برای اینکار موقع نصب کیوت, گزینه ی نصب سورس باید انتخاب شده باشد(یا سورس کیوت را جداگانه دانلود کنید)
به مسیر زیر برو (مسیرها رو متناسب با محلی که کیوت در آن نصب شده تنظیم کن):
C:\Qt5.0.1-MSVC2010\5.0.1\Src\qtbase\src\plugins\sqldrivers\o dbc
فایل پروژه رو باز کن و بعد هم کامپایل...
خروجی شما چهار فایل زیر هستند:
qsqlodbc.dll
qsqlodbc.lib
qsqlodbcd.dll
qsqlodbcd.lib

فایل های فوق را در مسیر زیر کپی کن:
C:\Qt5.0.1-MSVC2010\5.0.1\msvc2010\plugins\sqldrivers


#include <QtSql>
#include <QDebug>
int main(int argc, char *argv[])
{
qDebug() << QSqlDatabase::drivers();
return 0;
}
خروجی قطعه برنامه بالا احتمالا چیزی شبیه این میشه:
("QSQLITE", "QODBC", "QODBC3")

AriaGlobal
جمعه 18 اسفند 1391, 01:00 صبح
واقعا ممنون بسيار کامل و جامع جواب من رو داديد مشکل کاملا حل شد.
اما موقع اتصال به ديتابيس اين ارور رو تو ديباگ از من ميگيره :


QSqlError(0, "QODBC3: Unable to connect", "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified")


کد :

QSqlDatabase iSql = QSqlDatabase::addDatabase("QODBC"); iSql.setHostName("127.0.0.1"); iSql.setUserName("sa"); iSql.setPassword("sql45"); iSql.setDatabaseName("master");
if(!iSql.open()) { qDebug() << iSql.lastError(); }

alamate_aoal
شنبه 19 اسفند 1391, 02:23 صبح
از اینجا (http://www.connectionstrings.com/sql-server-2012#sql-server-native-client-11-0-odbc-driver)رشه اتصال مناسب رو بگیر و تست کن


#include <QtSql>
#include <QDebug>

int main(int argc, char *argv[])
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("Driver={SQL Server Native Client 11.0};Server=myServerAddress;Database=myDataBase;U id=myUsername;Pwd=myPassword;Trusted_Connection=ye s;");
if (!db.open())
{
qDebug()<< "Err: " << db.lastError();
}
return 0;
}

AriaGlobal
شنبه 19 اسفند 1391, 15:18 عصر
تست کردم :

Err: QSqlError(0, "QODBC3: Unable to connect", "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified")

لازم به ذکر هست که من دارم از SQL Server 2000 استفاده ميکنم، ممکنه اشکال از اين باشه ؟

alamate_aoal
یک شنبه 20 اسفند 1391, 07:42 صبح
این (http://www.connectionstrings.com/sql-server#microsoft-sql-server-odbc-driver)رشته اتصال رو تست کن.