qt中如何用xml文件连接MYSQL数据库及相对路径

目录

一、xml文件

二、qt中编写数据库读取xml函数

三,实现数据库连接函数

四、使用上述函数

 五、补充(相对路径)


学习记录,如有错误欢迎指正。如有侵权纯属巧合(以下操作在同事帮助下完成)

参考链接:从 相对路径 说开来(从C++到Qt)_1+1=10-CSDN博客_qt相对路径

一、xml文件

        我单纯的把*.txt记事本的后缀名改成了*.xml

        xml的具体内容如下

<?xml version="1.0" encoding="UTF-8"?>
<paras>
	<DataBaseConfig>
		<hostName>127.0.0.1</hostName>
		<port>3306</port>
		<datebase>planedb</datebase>
		<username>root</username>
		<passWord>123456</passWord>
	</DataBaseConfig>
</paras>

        其中hostName、port、datebase、username、password都是我自定义标签,

        后面读取数据,也是通过标签来读取。

二、qt中编写数据库读取xml函数

//读取XML文件
//filePath 文件路径   valuename 标签名
QString DBHelper::readXmlfile(const QString &filePath, const QString& valueName)
{
    //打开或创建文件
    QFile file(filePath);
    if (file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        //构建QXmlStreamReader对象
        QXmlStreamReader reader(&file);
        while (!reader.atEnd())
        {
            //若xml的标签跟形参匹配
            if (reader.name() == valueName)
            {
                //返回xml标签内的值
                return reader.readElementText();
            }
            else
            {
                //若不匹配,则查看下一个标签是否匹配
                reader.readNext();
            }
        }
        //关闭文件
        file.close();
    }
    else
    {
        return "配置文件打开失败!";
    }
    return "nullptr";
}

三,实现数据库连接函数

bool DBHelper::ConnDB()
{
    QSqlDatabase db;
    //1、原始连接数据库方法
//    db = QSqlDatabase::addDatabase("QMYSQL");
//    db.setHostName("127.0.0.1");
//    db.setPort(3306);
//    db.setDatabaseName("planedb");
//    db.setUserName("root");
//    db.setPassword("123456");

    //2、用xml连接数据库方法
    db = QSqlDatabase::addDatabase("QMYSQL");
    QString filePath = "../plane/MysqlXml.xml";//相对路径

    //设置标签名称
    QString hostName = "hostName";
    QString port = "port";
    QString datebase = "datebase";
    QString username = "username";
    QString passWord = "passWord";
    //读取xml文件
    if(readXmlfile(filePath, hostName) != "false")
    {
        //若成功则控制台打印hostName
        qDebug() << __LINE__ << "DBHelper.cpp" << readXmlfile(filePath, hostName);
    }
    else
    {
        //失败则控制台打印失败
        qDebug() << QStringLiteral("XML文件打开失败!");
        //返回false
        return false;
    }

    //读取xml成功则配置数据库参数
    db.setHostName(readXmlfile(filePath, hostName));
    db.setPort(readXmlfile(filePath, port).toInt());
    db.setDatabaseName(readXmlfile(filePath, datebase));
    db.setUserName(readXmlfile(filePath, username));
    db.setPassword(readXmlfile(filePath, passWord));

    //返回数据库打开情况
    return db.open();
}

四、使用上述函数

//获取数据库类中的方法ConnDB(三中编写的函数)
//m_pDBHelper是自定义数据库类的指针,在头文件中定义的
bool dbhlper = m_pDBHelper->ConnDB();

//结果取反,若连接失败则报错退出
if(!dbhlper)
{
    QMessageBox::warning(this, "connectDB", "error", QMessageBox::Ok);
    return;
}
//否则显示成功对话框
QMessageBox::warning(this, "connectDB", "success", QMessageBox::Ok);

然后就成功啦

结果:

 五、补充(相对路径)

        在上述内容中,我使用了相对路径

        QString filePath = "../plane/MysqlXml.xml";//相对路径

        在qt中当前路径.(一个点)是在这个构建目录下(如下图)

        而我的xml文件路径为

        所以我直接./*.xml是找不到我的文件的。 

        而我想使用相对路径找到该xml文件,则需要根据构建目录为当前目录所在位置。通过寻找构建目录的上级目录寻找自己所需要的文件。即

 返回它的上级目录,并进入plane文件夹,从而或许所需的*.xml文件

 故,我的xml文件相对路径为:

        "../plane/MysqlXml.xml";//相对路径

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值