Qt学习之sqlite外键写入

文章目录[隐藏]

Qt sqlite 外键写入前言

最近在学习 sqlite 数据库相关的知识,遇到的问题是:我有一张表例如用户表,其中字段有(id, 用户名,密码,权限),
由于其中权限不定,我想做成可拓展的,如(普通用户,管理员,......)。然后想到的解决办法就是外键,于是利用搜索引擎找到了答案。

Qt sqlite 外键写入关键词

FOREIGN KEY(class_id) REFERENCES pc_class(id))

Qt sqlite 外键写入例子(开启事务写入)

QStringList sqlList << QString("create table users (id INTEGER primary key AUTOINCREMENT,") +
                       QString("name varchar(16), password varchar(30), power int, FOREIGN KEY(power) REFERENCES user_roles(id));")
                    // 创建 user_roles 表
                    << QString("create table user_roles (id INTEGER primary key AUTOINCREMENT,") +
                       QString("name varchar(16), desc varchar(100));");

Qt sqlite 语句执行

// 连接数据库
void DbSqlite::initSqlDatabase(QSqlDatabase & database, QString connName,
	QString connType, QString dbName, QString dbHost,
	QString dbPort, QString dbUserName, QString dbPassword) {
	if (QSqlDatabase::contains(connName)) {
		database = QSqlDatabase::database(connName);
	} else {
		database = QSqlDatabase::addDatabase(connType);
		database.setDatabaseName(dbName);
		database.setHostName(dbHost);
		database.setPort(QString(dbPort).toInt());
		database.setUserName(dbUserName);
		database.setPassword(dbPassword);
	}
}

STATUS_CODE DbSqlite::actionSqlCmd(QSqlDatabase & database, QString strSql) {
	QSqlQuery sqlQuery(database);

	if (database.open()) {
		if (sqlQuery.exec(strSql)) {
			return STATUS_CODE::ACTION_SUCCESS;
		} else {
			// 数据表已存在
			Logger::instance().writeSystemLog(QStringLiteral("SQL 语句执行失败"));
			return STATUS_CODE::DB_EXEC_ERROR;
		}
	} else {
		return STATUS_CODE::DB_NO_OPEN;
	}
}

Qt学习之sqlite外键写入插图

Qt sqlite 语句执行结果展示

Qt学习之sqlite外键写入
posted @ 2020-03-17 15:23  不随。  阅读(53)  评论(0)    收藏  举报  来源