Daily Archives: September 2, 2005

qDebug()引起的一连串free溢出

调用类似 qDebug()<"main(), db.dbConnect() ="<<db.dbConnect();
引起程序在关闭的时候,free.c内存溢出。
qDebug doc讲,在一些平台,如果输入const char* =0的时候,可能crash掉
但现在不是这个问题,
最后发现原因是 在连接的时候输入库写成 release版本了,选择对应的debug版本就ok了(QtSql4.lib->QtSqld4.lib)。
此为记!

QODBC/Qt4

调试了很长时间,总是提示说“数据源名称过长”,后来发现问题出在将connStr里的
DRIVER写成Driver了
Qt的ODBC好象对大小写敏感,所以一定要根据DSN里的原样copy过来。

bool UserSoils::connectDb()
{

//create default conn using assigned dbPath
QString connStr=QString(
"DRIVER={Microsoft dBASE Driver (*.dbf)};FIL={dBase 5.0};DBQ=%1")

.arg(dbPath());

//for access
//QString connStr=QString(
// "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=c:xxxx.mdb");
qDebug()<<"UserSoils::connectDb(), connStr ="<< connStr;
QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(connStr);
return db.open();
//qDebug()<<"UserSoils::connectDb(),"<<db.lastError().databaseText();

}