• 3927阅读
  • 4回复

新手提问 关于数据库 [复制链接]

上一主题 下一主题
离线tsinghtdh
 

只看楼主 正序阅读 楼主  发表于: 2012-02-06
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2012-02-10) —
  小弟初学Qt,编一个信息录入的小程序时在连接数据那一步遇到问题,这部分的代码如下:

void Modelview::Aconnect()
{
dbconn -> database( dbname,false );

if( dbconn -> isValid() )
{
  return;
}
dbconn -> addDatabase( "QODBC" ,dbname );
QString dsn = QString( "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1" ).arg( dbname );
dbconn -> setDatabaseName( dsn );
dbconn -> setHostName( dbhost );
dbconn -> setUserName( dbuser );
dbconn -> setPassword( dbkey );
dbconn -> open();
}

  其中dbname,dbhost,dbuser,dbkey为QString,,从界面获得值,传值部分代码运行正常,dbconn为已定义的QSqlDatabase指针。运行时执行连接命令调用该函数,结果报错如下
          Unhandled exception at 0x6200a42d (QtSqld4.dll) in DIGbase.exe: 0xC0000005: Access violation reading location 0xcdcdcdcd.
  不知道这是什么意思,该怎么处理。希望各位高人指点,谢谢!
离线tsinghtdh

只看该作者 4楼 发表于: 2012-02-10
回 3楼(XChinux) 的帖子
按你说的方法已经连接成功了 非常感谢!
离线XChinux

只看该作者 3楼 发表于: 2012-02-08
可以当指针用啊,只不过addDatabase()函数返回的是一个对象.
QSqlDatabase *db  = new QSqlDatabase(QSqlDatabase::addDatabase(...));
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线tsinghtdh

只看该作者 2楼 发表于: 2012-02-07
回 1楼(XChinux) 的帖子
你好,是不是说QSqlDatabase类对象不能当指针用,只能直接按QSqlDatabase db = QSqlDatabase::addDatabase(.....)生成,然后在全局调用?
离线XChinux

只看该作者 1楼 发表于: 2012-02-06
使用错误。
QSqlDatabase db = QSqlDatabase::addDatabase(.....);
db.setXXXX
...
db.open()
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个