C/Visual C - ejemplos de PQescapeByteaConn en C

 
Vista:

ejemplos de PQescapeByteaConn en C

Publicado por Miguel Angel (2 intervenciones) el 22/02/2010 23:19:30
Hola compañeros!!

disculpen, alguien podria hecharme3 la mano para darme un ejemplo de como se usa de forma correcta el "PQescapeByteaConn" en C,

por ahi e bajado algunos codigos pero no funcionan y estoy buscando algun codigo "ejemplo" para que me sriva de guia de como hacer el uso del "PQescapeByteaConn" de forma correcta!!!

gracias por su ayuda!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ejemplos de PQescapeByteaConn en C

Publicado por Aquiles (9 intervenciones) el 23/02/2010 21:46:08
http://www.postgresql.org/docs/7.3/static/libpq-exec.html
1.3.3

Veo que estas trabajando con la libreria de PostgresSQL.
Si me dices un poco mas detalladamente lo que estas haciendo, tal vez
te pueda ayudar.

PQescapeByteaConn:

Convierte valores binarios a texto( los que no se pueden visualizar normalmente ),
representandolos en octal.

Por ejemplo.

"Hola mundo \\n" a "Hola mundo\\\\012"

obs:
\\n en decimal vale 10
\\012 en octal equivale a 10 en decimal


// en C:
// donde cn1 es la conexion a la DB ya establecida .

unsigned char * valor = (unsigned char*)"hola mundo\n";
size_t total;
unsigned char * escape = PQescapeByteaConn( cn1, (unsigned char*)valor, strlen((char*)valor), &total );

printf( "original = (%i = %i - %i)\n", valor[0], valor[1], valor[2] );
printf( "escape = %s, %i\n", escape, total );
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ejemplos de PQescapeByteaConn en C Ya listo

Publicado por Miguel Angel (2 intervenciones) el 24/02/2010 00:27:06
Aquiles:

gracias, ya tambien a prueba y error me avente un codigo para hacer mas practico para mi uso
y aqui lo dejo para toda aquella persona que lo necesite algun dia.

. . . . #include <stdio.h>
. . . . #include <stdlib.h>
. . . . #include <string.h>
. . . . #include </usr/include/pgsql/libpq-fe.h>

. . . . void insetar(){
. . . . . . . . PGconn *conn;

. . . . . . . . unsigned char _v[1000];
. . . . . . . . int l;
. . . . . . . . size_t tmp_len;
. . . . . . . . char tmp_s[1000],query[1100];
. . . . . . . . sprintf(_v, " %êr>­d-«ë+ßRã Š QH b $  >­F-«}+ßRë Ÿ ]X b  >­(-ªä+ßRò œ _^ b  >¬á-ª|+ßS' ˜ \T b ");
. . . . . . . . l =strlen(_v);

. . . . . . . . conn= PQsetdbLogin("192.170.1.135", "5432", NULL,NULL, "prueba","postgres", "" );

. . . . . . . . if (PQstatus(conn) != CONNECTION_BAD){
. . . . . . . . . . . . printf("\tiniciamos Insercion\n");
. . . . . . . . . . . . sprintf(tmp_s, (char*) PQescapeByteaConn(conn, _v, l, &tmp_len));
. . . . . . . . . . . . sprintf(query,"insert into manejo (idb) values (E'%s')",tmp_s);
. . . . . . . . . . . . PQexec(conn, query);
. . . . . . . . . . . . printf("\n\tacabamos insercion\n");
. . . . . . . . }else
. . . . . . . . . . . . printf("\n Error!!");
. . . . . . . . PQfinish(conn);
. . . . }

. . . . void dameDatos( ) {
. . . . . . . . int newSize = 0, i;
. . . . . . . . float *prsData = 0;
. . . . . . . . char myData[2000];
. . . . . . . . char *pUnescapedData = 0;
. . . . . . . . PGconn *conn;
. . . . . . . . PGresult *res;

. . . . . . . . conn= PQsetdbLogin("192.170.1.135", "5432", NULL,NULL, "prueba","postgres", "" );
. . . . . . . . memset ( myData, 0, 2000 );
. . . . . . . . res = PQexec(conn, "select * from manejo where (ind=41 OR ind>10000000) order by ind");

. . . . . . . . if (PQstatus(conn) != CONNECTION_BAD){
. . . . . . . . . . . . for(i=0; i<PQntuples(res); i++){
. . . . . . . . . . . . . . . . sprintf(myData, PQgetvalue(res,i,1));
. . . . . . . . . . . . . . . . pUnescapedData = PQunescapeBytea ( myData, &newSize );
. . . . . . . . . . . . . . . . prsData = ( float * ) pUnescapedData;
. . . . . . . . . . . . . . . . printf("%d\t%s\n",i,pUnescapedData);
. . . . . . . . . . . . }
. . . . . . . . }else
. . . . . . . . . . . . printf("\n Error!!");
. . . . . . . . PQfinish(conn);
. . . . }

. . . . int main ( ) {
. . . . . . . . void dameDatos();
. . . . . . . . void insetar();
. . . . . . . . insetar();
. . . . . . . . printf( "\nllamamos a los datos\n\n" );
. . . . . . . . dameDatos( );
. . . . . . . . return 0;
. . . . }

Espero y a alguien tambien le pueda servir!! Y gracias de nuevo aquiles!!!

Se libre, se opensource
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar