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 <ranges>
#include <algorithm>
@ -10,13 +16,22 @@
#include "util.h"
template<typename T>
void log(T msg){
#ifdef DEBUG
std::cout<<msg<<std::endl;
#endif
}
using util::_support_string;
[[maybe_unused]]
struct RowItem{
std::vector<std::string_view> row;
};
//Not Implemented;
[[maybe_unused]]
class Result{
std::vector<std::string_view> fields;
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> really_result;
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());
if(auto mysql_result = mysql_store_result(&mysql_client); mysql_result != nullptr){
auto field_length = mysql_num_fields(mysql_result);
auto row = mysql_fetch_row(mysql_result);
for(int i=0; i<field_length; i++){
really_result.emplace_back(row[i]);
while(auto row = mysql_fetch_row(mysql_result)){
really_result.emplace_back(row[0]);
}
mysql_free_result(mysql_result);
}
@ -143,7 +157,7 @@ public:
return false;
}
std::vector<std::string_view> GetTables(){
std::vector<std::string_view> get_tables(){
std::vector<std::string_view> really_result;
mysql_query(&mysql_client, "SHOW TABLES;");
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){
SqlConnection conn{};
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";});
// auto table_result = conn.GetTables();
auto result = conn.Query("SELECT IMEI_1 FROM R303 WHERE Powertest=1;");
ranges::for_each(result.value(), [](auto row){
ranges::for_each(row, [](auto item){
cout<<item<<", ";
});
cout<<endl;
});
// auto result = conn.Query("SELECT IMEI_1 FROM R303 WHERE Powertest=1;");
// ranges::for_each(result.value(), [](auto row){
// ranges::for_each(row, [](auto item){
// cout<<item<<", ";
// });
// cout<<endl;
// });
return 0;
}