
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
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)