-
Notifications
You must be signed in to change notification settings - Fork 0
/
pruebaS.c
146 lines (110 loc) · 3.22 KB
/
pruebaS.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <ctype.h>
#include <string.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdarg.h>
#include <libpq-fe.h>
// Alejandro Paez Perez UNACH
PGconn *conexion_db();
void comprobar_estadodb();
void do_exit(PGconn *conexion);
static PGconn *conexion;
void main()
{
// fifos
int ffilas, fcolumnas;
int fconsulta;
int fconsulta2;
int filasint;
int columnasint;
char filasq[10]= {0};
char columnasq[10]= {0};
char consulta [1000];
char consulta2 [1000];
char querys [1000];
char filas[100];
do
{
//PARA CONSULTAR DATOS
fconsulta = open("FIFOCONSULTA", O_RDONLY);
read(fconsulta,consulta, sizeof(consulta));
printf("la consulta es:\n %s\n",consulta);
//if (consulta == NULL){
//printf("no trae nada la consulta\n");
//}else{
conexion = conexion_db();
PGresult * respC = PQexec(conexion, consulta);
//SACAR EL DATO DE FILAS Y COLUMNAS
filasint = PQntuples(respC);
columnasint = PQnfields (respC);
//CONVERTIMOS A CHAR LOS DATOS ENTEROS
sprintf(filasq, "%d", filasint);
sprintf(columnasq, "%d", columnasint);
printf("esta son las filas : %s \n",filasq);
printf("este es el la columnas con pnfield: %s \n",columnasq);
//IMPRIMIR DATOS
fconsulta2 = open ("FIFOCONSULTABACK",O_WRONLY);
for (int i = 0; i < PQntuples(respC); i++){ //filas
for (int j = 0; j < PQnfields(respC); j++){//columnas
sprintf(querys,(PQgetvalue(respC,i,j)));
printf("%s | ",querys);
write(fconsulta2,querys,sizeof(querys));
}
printf("\n");
//}
close(fconsulta2);
}
ffilas = open("FIFOFILAS",O_WRONLY);
write(ffilas,filasq,sizeof(filasq));
close(ffilas);
fcolumnas = open("FIFOCOLUMNAS",O_WRONLY);
write(fcolumnas,columnasq,sizeof(columnasq));
close(fcolumnas);
// validacion si la inserccion es correcta
if (PQstatus(conexion) != CONNECTION_OK)
{
sprintf(consulta2, "Error de consulta valores invalido\n");
}
else
{
sprintf(consulta2, "Query exitoso\n");
}
fconsulta2 = open("FIFO2", O_WRONLY);
write(fconsulta2, consulta2, sizeof(consulta2));
close(fconsulta2);
// limpiar la cadena para que no tires basura
for (int i = 0; i < 100; i++)
{
consulta[i] = '\0';
consulta2[i] = '\0';
}
} while (1);
printf("SALIR\n");
return 0;
}
// metodo conexion
PGconn *conexion_db()
{
if (conexion == NULL)
{
conexion = PQconnectdb("host=127.0.0.1 port=5432 dbname=tienda user = postgres password=1234");
printf("conexion exitosa\n");
}
comprobar_estadodb(conexion);
return conexion;
}
void comprobar_estadodb()
{
if (PQstatus(conexion) == CONNECTION_BAD)
{
fprintf(stderr, "Falló la conexión a la base de datos:%s \n", PQerrorMessage(conexion));
}
}
void do_exit(PGconn *conexion)
{
PQfinish(conexion);
exit(1);
}