QT查询mysql数据库中表格是否存在怎么 *** 作

QT查询mysql数据库中表格是否存在怎么 *** 作,第1张

// QSqlDataBase里面可以查询所有表的名字,然后进行匹配即可

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL")

    db.setHostName("acidalia")

    db.setDatabaseName("customdb")

    db.setUserName("mojito")

    db.setPassword("J0a1m8")

    bool ok = db.open()

    // 打开数据库

    QSringList strTables = db.tables()

    if (strTables.contains("Your table") {

        qDebug() << "Yes"

    }

    else {

        qDebug() << "no"

    }

方法有二:

1、查询表user,如果抛出表不存在的异常,就证明表user不存在。

2、查询系统表,每种数据库都有一张系统表,用该存放数据库中的所有表的信息。

你只需要查询系统表有无该表的记录即可。但是不同种类的数据库,系统表可能不一样。

// 字段和表是否存在,1表示存在,0表示表不存在,-1表示字段不存在,-2表示系统错误

int IsValid(const QString& tableName, const QString& fieldName)

{

QMutexLocker locker(&mutex)//加互斥锁

QSqlQuery query(*m_db)

QString strSql = QString("SELECT * FROM SQLITE_MASTER WHERE TYPE='table' AND NAME='%1'").arg(tableName)

if (query.exec(strSql))

{

if (query.next())//表存在

{

strSql = QString("SELECT * FROM %2").arg(tableName)

if (query.exec(strSql))

{

QSqlRecord record = query.record()

int index = record.indexOf(fieldName)

if (index == -1)

{

return -1

}

else

{

return 1

}

}

else

{

qWarning()<<__FUNCTION__<<"sql:"<<strSql<<",lastError:"<<query.lastError().text()

return -2

}

}

else//表不存在

{

return 0

}

}

else

{

qWarning()<<__FUNCTION__<<"sql:"<<strSql<<",lastError:"<<query.lastError().text()

return -2

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/9631387.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存