• 4114阅读
  • 2回复

请教QT连接oracle数据库问题 [复制链接]

上一主题 下一主题
离线ziv.han
 
只看楼主 倒序阅读 楼主  发表于: 2009-06-02
我在开发一个类似于sqldeveloper的软件。遇到一个奇怪的问题,请大家帮帮忙,在下不胜感激涕零!!!
问题如下:
软件平台连接2个数据源,一个为该平台用户登录所用(为oracle 数据库),另一个为该用户操作另一个数据源所用(为oracle或mysql)。
用户登录系统后,软件正常(修改用户属性,修改密码等),接受键盘任何操作。但是当连接另一个数据源后,软件不接受键盘任何操作,鼠标在改软件上工作正常。
注:数据源连接正确,没有任何问题。
Love Qt, love life.
离线wd007

只看该作者 1楼 发表于: 2009-06-03
听起来有点复杂,你为什么这么设计呢
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线ziv.han
只看该作者 2楼 发表于: 2009-06-04
引用第1楼wd007于2009-06-03 22:14发表的  :
听起来有点复杂,你为什么这么设计呢


这个软件主要用于安全方面的管理,用于记录所有对数据库的操作。
一个DSN连接该软件的数据库(software-database),
另一个DSN连接要操作的数据库(比如oracle下的Scott),所有对Scott表下的操作都记录在software-database数据库中。
我遇到的问题是:当连接scott用户的时候,软件不接受键盘输入了,但是其他程序(如text能正常接受键盘输入)。
连接数据库的代码是:
  QSqlError err;
    global->cursor.setShape(Qt::WaitCursor);
    setCursor(global->cursor);
    if(global->db.isOpen())   // global->db 是全局Qsqldatabase, 其声明是: QSqldatabase db;
    {
        global->db.close();
    }
    global->db = QSqlDatabase::addDatabase(DriverType,QString("HOST"));
    global->db.setDatabaseName(DatabaseName);
    global->db.setHostName(host);
    global->db.setPort(port);
    global->db.setUserName(UserName);

    global->db.setPassword(password);

    if(!global->db.open())
    {
        err = global->db.lastError();
        qDebug() << "Database cannot open" << err.text();
        unsetCursor();
        return;
    }

当数据库连接之后,就不接受键盘输入了!!!
Love Qt, love life.
快速回复
限100 字节
 
上一个 下一个