fix get fields function

This commit is contained in:
jie 2024-11-22 17:14:20 +08:00
parent 31266b363e
commit c3576fe26d
2 changed files with 29 additions and 12 deletions

View File

@ -1,3 +1,9 @@
#define DEBUG
#ifdef DEBUG
#include <iostream>
#endif
#include <optional> #include <optional>
#include <ranges> #include <ranges>
#include <algorithm> #include <algorithm>
@ -10,13 +16,22 @@
#include "util.h" #include "util.h"
template<typename T>
void log(T msg){
#ifdef DEBUG
std::cout<<msg<<std::endl;
#endif
}
using util::_support_string; using util::_support_string;
[[maybe_unused]]
struct RowItem{ struct RowItem{
std::vector<std::string_view> row; std::vector<std::string_view> row;
}; };
//Not Implemented; //Not Implemented;
[[maybe_unused]]
class Result{ class Result{
std::vector<std::string_view> fields; std::vector<std::string_view> fields;
std::map<std::string_view, std::vector<std::string_view>> datas; std::map<std::string_view, std::vector<std::string_view>> datas;
@ -98,13 +113,12 @@ public:
std::vector<std::string_view> get_fields(std::string_view table_name){ std::vector<std::string_view> get_fields(std::string_view table_name){
std::vector<std::string_view> really_result; std::vector<std::string_view> really_result;
std::string command; std::string command;
std::format_to(std::back_inserter(command), "SHOW COLUMNS FROM %s;", table_name); std::format_to(std::back_inserter(command), "SHOW COLUMNS FROM {};", table_name);
auto _ = mysql_query(&mysql_client, command.c_str()); auto _ = mysql_query(&mysql_client, command.c_str());
if(auto mysql_result = mysql_store_result(&mysql_client); mysql_result != nullptr){ if(auto mysql_result = mysql_store_result(&mysql_client); mysql_result != nullptr){
auto field_length = mysql_num_fields(mysql_result); auto field_length = mysql_num_fields(mysql_result);
auto row = mysql_fetch_row(mysql_result); while(auto row = mysql_fetch_row(mysql_result)){
for(int i=0; i<field_length; i++){ really_result.emplace_back(row[0]);
really_result.emplace_back(row[i]);
} }
mysql_free_result(mysql_result); mysql_free_result(mysql_result);
} }
@ -143,7 +157,7 @@ public:
return false; return false;
} }
std::vector<std::string_view> GetTables(){ std::vector<std::string_view> get_tables(){
std::vector<std::string_view> really_result; std::vector<std::string_view> really_result;
mysql_query(&mysql_client, "SHOW TABLES;"); mysql_query(&mysql_client, "SHOW TABLES;");
if(auto mysql_result = mysql_store_result(&mysql_client); mysql_result != nullptr){ if(auto mysql_result = mysql_store_result(&mysql_client); mysql_result != nullptr){

View File

@ -8,14 +8,17 @@ using namespace std;
int main(int argc, char** const argv){ int main(int argc, char** const argv){
SqlConnection conn{}; SqlConnection conn{};
auto resp = conn.Connect("192.168.1.17", "3306", "root", "", "mobiletek_mmi"); auto resp = conn.Connect("192.168.1.17", "3306", "root", "", "mobiletek_mmi");
auto table_result = conn.get_tables();
auto fields = conn.get_fields("r303");
ranges::for_each(fields, [](auto item){cout<<item<<endl;});
// resp.or_else([](auto err_msg){cout<<err_msg<<"\n";}); // resp.or_else([](auto err_msg){cout<<err_msg<<"\n";});
// auto table_result = conn.GetTables(); // auto table_result = conn.GetTables();
auto result = conn.Query("SELECT IMEI_1 FROM R303 WHERE Powertest=1;"); // auto result = conn.Query("SELECT IMEI_1 FROM R303 WHERE Powertest=1;");
ranges::for_each(result.value(), [](auto row){ // ranges::for_each(result.value(), [](auto row){
ranges::for_each(row, [](auto item){ // ranges::for_each(row, [](auto item){
cout<<item<<", "; // cout<<item<<", ";
}); // });
cout<<endl; // cout<<endl;
}); // });
return 0; return 0;
} }