selectOperation.cpp
#include "SelectOperation.h"
SelectOperation::SelectOperation(const std::string& tableName)
{
sql_statement = "SELECT * FROM " + tableName;
}
void
SelectOperation::prepareStatement(sqlite3_stmt** stmt, sqlite3* db)
{
int rc = sqlite3_prepare_v2(db, sql_statement.c_str(), -1, stmt, nullptr);
if (rc != SQLITE_OK) {
throw DbException("Failed to prepare select statement: " + std::string(sqlite3_errmsg(db)));
}
}
我正在尝试做这些SQL的事情,而IDK如何询问我在做什么
#pragma once
#include "../SqlOperation.h"
#include "../../Exceptions/DbException.h"
#include "ITableRecord.h"
#include <sqlite3.h>
#include <vector>
#include <string>
class SelectOperation : public SqlOperation
{
public:
SelectOperation(const std::string& tableName);
void prepareStatement(sqlite3_stmt** stmt, sqlite3* db) override;
};
目前,返回空白的唯一原因是因为我不知道如何查询我不知道形状的对象。在此程序中,为了绝对简单,我假设输入到数据库中的所有内容都将最少具有:整数ID,字符串名称,然后是任何对象类型的任何其他行。我希望能够返回对象,而不是对象的字符串或表示形式。
我还有许多其他类似类别的类,例如插入删除。...应用程序使我可以创建表,并应该让我操纵它们。 我希望能够从MySQL数据库中选择一个特定的表,并以等效的C ++类表示该表;有点像Orm对我们所做的;但是我有点想自己做。我可以创建和丢弃表,并且可以将新的表和对象插入其中,并在其中删除表和对象;但是,如果我尝试选择一个用于查看或编辑的表;它不太有用,因为当它们在DB中以表格输入时,在内存或其他任何内容中都没有等效的C ++类。我能做的最好的方法是返回表格的打印摘要,但我想实际检索“对象”本身,而不是代表它。我真的很想达到我可以从中生成代码的地步 - 但这是一个伸展的目标。更真实地,我希望能够通过SQL本身查看和编辑DB中的表格,这应该是一个更易于管理的目标;但是在这种情况下,如果我查询表,那么如果我不知道形状是什么,我将无法打印某些内容(即表有多少行)。我可以共享更多代码,因为我意识到这只是一件小事,但是至少有20个文件,所以最好分享什么。现在,我特别处理此精选语句,但是如果设计完全好,则IDK。
我在互联网上寻求帮助,现实生活中的人或互联网在我身上没有帮助,AI尚无用 - 尤其是对于这些系统设计类型问题。
看起来您正在尝试在C ++中创建一个类似ORM的系统,但在处理未知结构的表方面努力。您可以使用
PRAGMA table_info(table_name);
std::map<std::string, std::any>
sqlite3_step()