elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Cómo incluir el nombre del esquema de la base de datos en una consulta con pqxx::from_query?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo incluir el nombre del esquema de la base de datos en una consulta con pqxx::from_query?  (Leído 1,581 veces)
jstech

Desconectado Desconectado

Mensajes: 1


Ver Perfil
¿Cómo incluir el nombre del esquema de la base de datos en una consulta con pqxx::from_query?
« en: 1 Octubre 2023, 18:49 pm »

Necesito leer varias columnas de una tabla en una aplicación C++ que usa libpqxx. Además del nombre de la tabla es necesario indicar el nombre del esquema, si no, la consulta no funciona.

He probado a hacerlo construyendo un string con la query de la siguiente
forma y funciona correctamente:

connection Connection(ConnectionCommand);
work W(Connection);
std::string strQuery = "SELECT * FROM my_schema.my_table";
result queryResult = W.exec(strQuery);


for (pqxx::result::const_iterator tableFile = queryResult.begin(); tableFile != queryResult.end(); ++tableFile)
{
   int value1 = tableFile["col1"].as<int>();
   std::string value2 = tableFile["col2"].as<std::string>();
   std::string value3 = tableFile["col3"].as<std::string>();
}

Connection.close();


Pero me interesaría haer la SELECT usando la función from_table

Estoy usando este código que funciona correctamente cuando en la SELECT no es necesario especificar el nombre del esquema de la base de datos:

connection Connection(ConnectionCommand);
work W(Connection);

stream_from TableReader{W,from_table,_PG_Params.TableName};
tuple<std::string, std::string,std::string,std::string,std::string> tablerow;
while (TableReader >> tablerow)
{
   int value1 = get<0>(tablerow);
   std::string value2 = get<1>(tablerow);
   std::string value2 = get<2>(tablerow);
}

TableReader.complete();
Connection.close();


Pero en la base de datos donde está esta tabla sí es necesario indicar el nombre del esquema y, tras consultar documentación, la estructura _PG_Params consta de estos campos:

struct postgreSqlParameters
{
   string DataBaseName;
   string TableName;
   string User;
   string IP;
   string Port;
   string Password;
}


Como no aparece un campo que correspnda al nombre del esquema, he probado a incluirlo formando parte del nombre de la tabla, es decir, el nombre de la tabla es "my_schema.my_table", en lugar de "my_table", pero entonces la SELECT no funciona, dando lugar a un error en tiempo de ejecución.

Agradezco cualquier sugerencia sobre cómo puedo hacer para que from_table tenga en cuenta el nombre del esquema.



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines