带有 sql 连接器的 C++ 无需请求太多数据即可获取元数据
C++ with sql connector getting metadata without asking for to much data
我刚开始使用 C++ 中的 sql 连接器(和 sql)。
我需要从数据库中的对象中编写一堆头文件。 (MariaDB,但如果它适用于所有 sql 数据库,那就太好了)
到目前为止,我的解决方案是使用
获取 table 名称
res = stmt->executeQuery("SHOW TABLES from " + dbname);
其中 dbname 是用户输入的字符串。
我将数据存储在一个名为 tablenames 的向量中供以后使用,并按如下方式使用它:
for(std::string table :tablenames){
delete stmt; //freeing memory and attach new information to it
delete res;
std::string query;
query = "SELECT * from " + table + ";";
stmt = con->createStatement();
res = stmt ->executeQuery(query);
std::cout << query << "\n";
//using metadata for getting information or passing it to another method
}
它尚未准备就绪,但可以使用,但我从数据库中获取的信息比我需要的多得多。我只想从数据库中取出 1 行(或者可能只是 table 信息)并访问元数据以检索头文件所需的信息(如 columnlabel、columntypename 和可能的显示大小)。
所以我的问题是,我的解决方案产生了太多流量,特别是如果我 运行 这针对大型数据库。
我找到了一些使用类似的解决方案
WHERE id = 1
但我不能保证 table 中有一个 id(或其他东西)。
我希望你能帮助我找到更好的解决方案。
使用限制关键字。 "select * from table LIMIT 1" 这将如其所说,并将结果限制为一个。
我刚开始使用 C++ 中的 sql 连接器(和 sql)。 我需要从数据库中的对象中编写一堆头文件。 (MariaDB,但如果它适用于所有 sql 数据库,那就太好了) 到目前为止,我的解决方案是使用
获取 table 名称res = stmt->executeQuery("SHOW TABLES from " + dbname);
其中 dbname 是用户输入的字符串。 我将数据存储在一个名为 tablenames 的向量中供以后使用,并按如下方式使用它:
for(std::string table :tablenames){
delete stmt; //freeing memory and attach new information to it
delete res;
std::string query;
query = "SELECT * from " + table + ";";
stmt = con->createStatement();
res = stmt ->executeQuery(query);
std::cout << query << "\n";
//using metadata for getting information or passing it to another method
}
它尚未准备就绪,但可以使用,但我从数据库中获取的信息比我需要的多得多。我只想从数据库中取出 1 行(或者可能只是 table 信息)并访问元数据以检索头文件所需的信息(如 columnlabel、columntypename 和可能的显示大小)。
所以我的问题是,我的解决方案产生了太多流量,特别是如果我 运行 这针对大型数据库。
我找到了一些使用类似的解决方案
WHERE id = 1
但我不能保证 table 中有一个 id(或其他东西)。
我希望你能帮助我找到更好的解决方案。
使用限制关键字。 "select * from table LIMIT 1" 这将如其所说,并将结果限制为一个。