永久的免费网站地址,网站维护学习,网站管理规范,自适应网站做1920的目录
简述
1. 通过注释生成C类
1.1 模糊生成
1.2 把控细节#xff0c;让结果更精准
1.3 让DeepSeek自动生成代码
2. 验证DeepSeek自动生成的代码
2.1 安装SQLite命令行工具
2.2 验证DeepSeek代码
3. 测试代码下载 简述
在现代软件开发中#xff0c;自动化编程工具如…目录
简述
1. 通过注释生成C类
1.1 模糊生成
1.2 把控细节让结果更精准
1.3 让DeepSeek自动生成代码
2. 验证DeepSeek自动生成的代码
2.1 安装SQLite命令行工具
2.2 验证DeepSeek代码
3. 测试代码下载 简述
在现代软件开发中自动化编程工具如 DeepSeek 为开发人员带来了极大的便利。本文将展示如何借助 DeepSeek 实现一个基于 Qt6 对数据库进行增删改查 的 C 类。通过为 C 类添加详细的注释使用 DeepSeek 进行代码的自动化补全。 1. 通过注释生成C类
1.1 模糊生成
自己也不明白需要实现什么细节的情况下写一个大致的提示词即可。DeepSeek 会自动生成相应的代码。可能给出的结果无法让你满意就像领导布置的任务一样你先做做完我再看大概率是要返工的
提示词 帮我写一个c接口类用Qt6实现对SQLite数据库的增删改查。 如果有进一步的要求那么将先把接口定义出来将注释写好通过DeepSeek的推理功能去实现。 1.2 把控细节让结果更精准
提示词
//要求帮我写一个c接口类用Qt6实现对sqlite数据库的增删改查。
//请按照注释补全接口代码同时包含所需的头文件、成员变量。class SQLiteManager
{
public:/*** 构造函数初始化SQLite数据库连接。* param dbName 数据库文件名包括路径。*/SQLiteManager(const QString dbName);/*** 析构函数关闭数据库连接并清理资源。*/~SQLiteManager();/*** 创建表。* param tableName 表名。* param columns 表的列定义格式为column1 type1, column2 type2, ...。* return 是否成功创建表。*/bool createTable(const QString tableName, const QString columns);/*** 插入数据。* param tableName 表名。* param columns 列名列表格式为{column1, column2, ...}。* param values 对应列的值格式为{value1, value2, ...}。* return 是否成功插入数据。*/bool insert(const QString tableName, const QStringList columns, const QVariantList values);/*** 更新数据。* param tableName 表名。* param setClause 设置子句格式为column1 value1, column2 value2。* param whereClause WHERE子句格式为column value。* return 是否成功更新数据。*/bool update(const QString tableName, const QString setClause, const QString whereClause);/*** 删除数据。* param tableName 表名。* param whereClause WHERE子句格式为column value。* return 是否成功删除数据。*/bool remove(const QString tableName, const QString whereClause);/*** 查询数据。* param tableName 表名。* param columns 查询的列名格式为column1, column2。默认为*表示查询所有列。* param whereClause WHERE子句格式为column value。默认为空。* return 查询结果模型QSqlQueryModel。*/QSqlQueryModel *select(const QString tableName, const QString columns *, const QString whereClause );
};
要点
说明接口需求要实现一个什么样的功能需要分为几个接口实现
然后通过注释给出接口的规范包括
接口的描述输入与输出返回值 1.3 让DeepSeek自动生成代码
将1.2中的详细提示词写完后保存到文件 或者 直接复制给 DeepSeek 推理中 以下是DeepSeek实现的SQLiteManager类
#include QSqlDatabase
#include QSqlQuery
#include QSqlError
#include QSqlQueryModel
#include QVariant
#include QStringListclass SQLiteManager
{
private:QSqlDatabase m_db;public:SQLiteManager(const QString dbName){m_db QSqlDatabase::addDatabase(QSQLITE);m_db.setDatabaseName(dbName);if (!m_db.open()) {qWarning() Failed to open database: m_db.lastError().text();}}~SQLiteManager(){if (m_db.isOpen()) {m_db.close();}QSqlDatabase::removeDatabase(m_db.connectionName());}bool createTable(const QString tableName, const QString columns){QSqlQuery query(m_db);QString sql QString(CREATE TABLE IF NOT EXISTS %1 (%2)).arg(tableName, columns);if (!query.exec(sql)) {qWarning() Create table failed: query.lastError().text();return false;}return true;}bool insert(const QString tableName, const QStringList columns, const QVariantList values){if (columns.size() ! values.size()) return false;QSqlQuery query(m_db);QString cols columns.join(, );QString placeholders QStringList(columns.size(), ?).join(, );query.prepare(QString(INSERT INTO %1 (%2) VALUES (%3)).arg(tableName, cols, placeholders));for (const auto value : values) {query.addBindValue(value);}if (!query.exec()) {qWarning() Insert failed: query.lastError().text();return false;}return true;}bool update(const QString tableName, const QString setClause, const QString whereClause){QSqlQuery query(m_db);QString sql QString(UPDATE %1 SET %2 WHERE %3).arg(tableName, setClause, whereClause);if (!query.exec(sql)) {qWarning() Update failed: query.lastError().text();return false;}return true;}bool remove(const QString tableName, const QString whereClause){QSqlQuery query(m_db);QString sql QString(DELETE FROM %1 WHERE %2).arg(tableName, whereClause);if (!query.exec(sql)) {qWarning() Delete failed: query.lastError().text();return false;}return true;}QSqlQueryModel* select(const QString tableName, const QString columns, const QString whereClause){QSqlQueryModel *model new QSqlQueryModel();QString sql QString(SELECT %1 FROM %2).arg(columns, tableName);if (!whereClause.isEmpty()) {sql QString( WHERE %1).arg(whereClause);}model-setQuery(sql, m_db);if (model-lastError().isValid()) {qWarning() Query failed: model-lastError().text();delete model;return nullptr;}return model;}
};
头文件依赖需要包含Qt SQL模块在.pro文件中添加
QT sql
或者在CMakeLists.txt中追加Sql修改以下部分
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Sql)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Sql)target_link_libraries(deepseek_sqlite1 PRIVATEQt${QT_VERSION_MAJOR}::WidgetsQt${QT_VERSION_MAJOR}::Sql
)功能特性
自动处理数据库连接的生命周期使用预编译语句防止SQL注入INSERT操作返回可直接用于Qt视图组件的QSqlQueryModel详细的错误日志输出
扩展建议
// 可添加事务支持
bool beginTransaction() { return m_db.transaction(); }
bool commit() { return m_db.commit(); }
bool rollback() { return m_db.rollback(); } 2. 验证DeepSeek自动生成的代码
2.1 安装SQLite命令行工具
相关阅读SQLite 安装教程以及可视化工具介绍
2.2 验证DeepSeek代码
#include QApplication
#include QTableView
#include sqlite_manager.hint main(int argc, char **argv) {QApplication app(argc, argv);SQLiteManager db(D:/test.db);db.createTable(users, id INTEGER PRIMARY KEY, name TEXT, age INTEGER);// 插入数据db.insert(users, {name, age}, {Alice, 25});// 更新数据//db.update(users, age 26, name Alice);// 删除数据//db.remove(users, age 30);// 查询数据 - 查询所有users数据QSqlQueryModel *model db.select(users, *, );QTableView tableView;tableView.setModel(model);tableView.show();return app.exec();
}运行 3. 测试代码下载 通过网盘分享的文件deepseek_sqlite1.zip 链接: https://pan.baidu.com/s/1IkH--pFYf4TzU7bmtaBdZA?pwd2wyg 提取码: 2wyg