QT+SQLite数据库配置和使用

一、简介
1.1 SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统。Qt5以上版本可以直接使用SQLite(Qt自带驱动)。
二、下载和配置
2.1 SQLite下载官网下载链接
2.2 根据计算机的配置,选择所需项目是64位还是32位下载对应的压缩包
在这里插入图片描述
2.3 安装
在系统盘(C盘)建一个名称为“sqlite”的文件夹,把上面下载的两个压缩包解压到这个sqlite文件夹中
在这里插入图片描述

2.4 配置计算机环境变量
右键此电脑,点击“属性”,打开“高级系统设置。
在这里插入图片描述
2.5.验证安装是否成功
在这里插入图片描述
三、应用数据库主要是增删查改,下面是相关函数代码
3.1 首先包含相关库文件

#include <QtWidgets/QWidget>
#include <sstream>
#include <QString>
#include <QDomDocument>
#include <QTextStream>
#include <QFile>
#include <QDir>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QMessageBox>
#include <vector>

3.2 函数

#pragma region 创建并连接SQLite数据库
//创建并连接SQLite数据库
bool SQLite::CreateConnectDB(QString sql_name, QSqlDatabase &database)
{
	try
	{
		//建立并打开数据库
		database = QSqlDatabase::addDatabase("QSQLITE");
		database.setDatabaseName(sql_name);
		bool bol_sql_open = database.open();
		if (bol_sql_open == false)
		{
			QMessageBox::critical(NULL, "Prompt", database.lastError().text());
			return false;
		}
		else
		{
			return true;
		}
	}
	catch (...)
	{
		return false;
	}
}
#pragma endregion

#pragma region 创建表格
//创建表格
bool SQLite::CreateTable(QString table_name)
{
	try
	{
		QSqlQuery sql_query;
		QString sql = "create table " + table_name + "(USERNAME text, PASSWORD text)";
		if (!sql_query.exec(sql))
		{
			QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());
			return false;
		}
		else
		{
			return true;
		}
	}
	catch (...)
	{
		return false;
	}
}
#pragma endregion

#pragma region 插入数据
//插入数据
bool SQLite::InsertData(QString table_name, QString user_name, QString password)
{
	try
	{
		QSqlQuery sql_query;
		QString sql = "insert into " + table_name + " values (?, ?)";
		sql_query.prepare(sql);
		sql_query.addBindValue(user_name);
		sql_query.addBindValue(password);
		if (!sql_query.exec())
		{
			QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());
			return false;
		}
		else
		{
			return true;
		}
	}
	catch (...)
	{
		return false;
	}
}
#pragma endregion

#pragma region 修改数据
//修改数据
bool SQLite::ModifyData(QString user_name, QString password)
{
	try
	{
		QSqlQuery sql_query;
		QString sql = "update LoginTable set PASSWORD = :PASSWORD where USERNAME = :USERNAME";
		sql_query.prepare(sql);
		sql_query.bindValue(":USERNAME", user_name);
		sql_query.bindValue(":PASSWORD", password);
		if (!sql_query.exec())
		{
			QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());
			return false;
		}
		else
		{
			return true;
		}
	}
	catch (...)
	{
		return false;
	}
}
#pragma endregion

#pragma region 查询数据
//查询数据
bool SQLite::QueryData(QString user_name, QString &password)
{
	try
	{
		//eg: "select * from LoginTable where USERNAME == 'user0';"
		QSqlQuery sql_query("select * from LoginTable where USERNAME == '" + user_name + "';");
		if (!sql_query.exec())
		{
			QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());
			return false;
		}
		else
		{
			while (sql_query.next())
			{
				password = sql_query.value(1).toString();
			}
			return true;
		}
	}
	catch (...)
	{
		return false;
	}
}
#pragma endregion

#pragma region 删除数据
//删除数据
bool SQLite::DeleteData(QString user_name)
{
	try
	{
		QSqlQuery sql_query("delete from LoginTable where USERNAME == '" + user_name + "';");
		if (!sql_query.exec())
		{
			QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());
			return false;
		}
		else
		{
			return true;
		}
	}
	catch (...)
	{
		return false;
	}
}
#pragma endregion

#pragma region 删除表格
//删除表格
bool SQLite::DeleteTable(QString table_name)
{
	try
	{
		QSqlQuery sql_query;
		sql_query.exec("drop table " + table_name);
		if (sql_query.exec())
		{
			QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());
			return false;
		}
		else
		{
			return true;
		}
	}
	catch (...)
	{
		return false;
	}
}
#pragma endregion

#pragma region 关闭数据库
//关闭数据库
bool SQLite::CloseDB( QSqlDatabase database)
{
	try
	{
		database.close();
		return true;
	}
	catch (...)
	{
		return false;
	}
}
#pragma endregion

导出SCV


#include <QSqlDatabase>
#include <QSqlQuery>
#include <QVariant>
#include <QFile>
#include <QTextStream>
 
void exportDataTable(const QString &databaseFile, const QString &tableName, const QString &csvFile) {
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(databaseFile);
 
    if (!db.open()) {
        // Handle error
        return;
    }
 
    QSqlQuery query(db);
    if (!query.exec(QString("SELECT * FROM %1").arg(tableName))) {
        // Handle error
        return;
    }
 
    QFile file(csvFile);
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
        // Handle error
        return;
    }
 
    QTextStream out(&file);
    while (query.next()) {
        QStringList columns;
        for (int i = 0; i < query.record().count(); ++i) {
            columns << query.record().fieldName(i);
        }
        out << columns.join(",") + "\n";
 
        while (query.next()) {
            QStringList rowData;
            for (const QString &column : columns) {
                rowData << query.value(column).toString();
            }
            out << rowData.join(",") + "\n";
        }
    }
 
    file.close();
    db.close();
}

调用


int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
 
    QString databaseFile = "path/to/your/database.sqlite";
    QString tableName = "your_table_name";
    QString csvFile = "path/to/your/export.csv";
 
    exportDataTable(databaseFile, tableName, csvFile);
 
    return app.exec();
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Qt和VS环境中连接SQLite数据库,您需要按照以下步骤进行操作: 1. 首先,确保您已经安装了Qt和Visual Studio,并且已经正确配置了它们。 2. 下载SQLite的预编译二进制文件。您可以从SQLite的官方网站(https://www.sqlite.org/download.html)下载预编译二进制文件。选择与您的操作系统和框架(32位或64位)匹配的版本。 3. 在Qt项目中创建一个新的C++类(例如,命名为DatabaseManager),用于管理数据库连接和操作。 4. 将SQLite的预编译二进制文件添加到您的Qt项目中。将SQLite的头文件和库文件复制到您的项目文件夹中,并在Qt项目文件(.pro文件)中添加以下行: ``` INCLUDEPATH += path_to_sqlite_headers LIBS += -Lpath_to_sqlite_libs -lsqlite ``` 将"path_to_sqlite_headers"和"path_to_sqlite_libs"替换为实际路径。 5. 在DatabaseManager类中,使用以下代码连接到SQLite数据库: ```cpp #include <QSqlDatabase> #include <QSqlQuery> // ... QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("path_to_your_database_file"); if (!db.open()) { // 处理数据库连接失败的情况 } else { // 数据库连接成功,可以执行查询和操作 } ``` 将"path_to_your_database_file"替换为您的SQLite数据库文件的路径。 6. 在连接成功后,您可以使用QSqlQuery类执行SQL查询和操作。例如: ```cpp QSqlQuery query; query.prepare("SELECT * FROM your_table"); if (query.exec()) { while (query.next()) { // 处理查询结果 } } else { // 处理查询执行失败的情况 } ``` 您可以根据需要修改查询语句和处理结果的逻辑。 这样,您就可以在Qt和VS环境中连接和使用SQLite数据库了。记得根据您的具体情况修改代码中的路径和查询语句。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值