找回密码
 立即注册
收起左侧

QT操作mysql数据库,有代码,求帮助

0
回复
4954
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2014-4-4 13:47:53 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
问题是这样的:
QT程序在Fedora14下运行,连接MYSQL一切正常,驱动安装正常,可以实现正常的增删查改操作。
我现在需要的功能是,程序里面可以添加一个数据库A,并且将已有的模板库复制给新添加的数据库A。
在控制台下面
1、create database
2、use database
3、source /WS2014QT/build-WS2014-Debug/data/cg2004_empty.sql
红色部分为模板库所在的位置。以上3步骤在控制台中一切正常,实现了我要的,但是在程序里面,就不好用了。
程序里面一样的顺序:
1、创建数据库:(代码如下)该步骤执行正常,可以通过控制台输入命令,看到新建立的数据库
bool linkdata::createDatabase(QString dataBaseName)
{
    QString sql = tr ("create database %1").arg(dataBaseName);
    QSqlQuery sqls;
    sqls.prepare(sql);
    if(!sqls.exec())
    {
        QMessageBox::warning(0,"警告","新建变电站数据库失败!");
        qDebug()<<"error"<<sqls.lastError().text();
        return false;
    }
    else
    {
        qDebug()<<"Create DataBase success!";
        return true;
    }
}
2、使用数据库:(代码如下)该步骤执行正常,在程序中可以输出当前的数据库名称
bool linkdata::setDataBaseName(QString name)
{
    database.close();
    database = QSqlDatabase::addDatabase("QMYSQL");
    database.setHostName("localhost");
    database.setDatabaseName(name);
    if(!database.open())
    {
        QMessageBox::warning(0,"警告","数据库连接错误!");
        qDebug()<<"error"<<database.lastError().driverText();
    }
    else
    {
        qDebug()<<tr("Change DataBase %1 success!").arg(name);
    }
    return true ;
}

3、还原数据库:(代码如下)这里出问题了,执行不了,而且不输出最后的错误是什么。
bool linkdata::copyDataBase(QString targetDataBaseName, QString sourceDataBaseName)
{
    QString  Path=QCoreApplication::applicationDirPath()+"/data/";
    sourceDataBaseName=Path+sourceDataBaseName;
    setDataBaseName(targetDataBaseName);
    //    QString sql = "source ";
    //    sql.append(sourceDataBaseName);
    QString sql = "source /WS2014QT/build-WS2014-Debug/data/cg2004_empty.sql";改为和控制台一样的指令也不行
    qDebug()<<sql;
    QSqlQuery sqls;
    sqls.prepare(sql);
    if(!sqls.exec())
    {
        QMessageBox::warning(0,"警告","复制空库至目标数据库失败!");
        qDebug()<<"error"<<sqls.lastError().text();
        return false;
    }
    else
    {
        qDebug()<<"Copy DataBase success!";
        return true;
    }
}



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了