Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.77 KB | None | 0 0
  1. #include <gtk.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <postgresql/libpq-fe.h>
  6.  
  7. struct values
  8. {
  9.   int id;
  10.   char *field;
  11.   struct values *next;
  12. };
  13.  
  14.  
  15. struct values* get_all_prise(PGresult *res , struct values *list)
  16. {
  17.  struct values *list_tmp;
  18.  list_tmp = list;
  19.  int i;
  20.  int sum = 0;
  21.     for (i = 0; i < PQntuples(res); i++)
  22.     {
  23.             sum = PQgetlength(res,i,1);
  24.             list->id=atoi(PQgetvalue(res, i, 0));
  25.             list->field = malloc(sum*sizeof(char));
  26.             memcpy(list->field,PQgetvalue(res, i, 1), sum);
  27.             list->field[sum] = '\0';
  28.             list->next = malloc(sizeof(struct values));
  29.             list = list->next;
  30.     }
  31.            free(list);
  32.            list = NULL;
  33.      return list_tmp;
  34. }
  35. void show_values(PGresult *res)
  36. {
  37.  int nFields = 0,i,j;
  38.  nFields = PQnfields(res);
  39.  
  40.     for (i = 0; i < PQntuples(res); i++)
  41.     {
  42.         for (j = 0; j < nFields; j++)
  43.             printf("%-15s", PQgetvalue(res, i, j));
  44.         printf("\n");
  45.     }
  46. }
  47.  
  48. static void exit_nicely(PGconn *conn)
  49. {
  50.     PQfinish(conn);
  51.     exit(1);
  52. }
  53.  
  54.  
  55. void displayUI(char *value)
  56. {
  57.         GtkWidget* mainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  58.         GtkWidget* button     = gtk_button_new_with_label(value);  
  59.         gtk_button_set_relief(button,GTK_RELIEF_HALF);
  60.         gtk_button_set_image_position(button,GTK_POS_LEFT);
  61.         gtk_window_set_default_size(GTK_WINDOW(mainWindow), 400, 300);
  62.         gtk_window_set_title(GTK_WINDOW(mainWindow), "GTK Simple Example");
  63.         gtk_window_set_position(GTK_WINDOW(mainWindow), GTK_WIN_POS_CENTER_ALWAYS);
  64.         gtk_signal_connect(GTK_OBJECT(mainWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
  65.         gtk_container_add (GTK_CONTAINER (mainWindow), button);
  66.         gtk_widget_show_all(mainWindow);
  67. }
  68.  
  69. int main(int argc, char *argv[])
  70. {
  71.     const char *conninfo;
  72.     PGconn     *conn;
  73.     PGresult   *res;
  74.     struct values *list = malloc(sizeof(struct values));
  75.     int         nFields;
  76.     int         i,j;
  77.    
  78.     conninfo = "host=localhost port=5432 dbname=srv user=postgres password=--117";
  79.  
  80.     conn = PQconnectdb(conninfo);
  81.  
  82.     if (PQstatus(conn) != CONNECTION_OK)
  83.     {
  84.         fprintf(stderr, "Connection to database failed: %s",
  85.                 PQerrorMessage(conn));
  86.         exit_nicely(conn);
  87.     }
  88.  
  89.     res = PQexec(conn, "select * from prise");
  90.     if (PQresultStatus(res) != PGRES_TUPLES_OK)
  91.     {
  92.         fprintf(stderr, "Select failed: %s", PQerrorMessage(conn));
  93.         PQclear(res);
  94.         exit_nicely(conn);
  95.     }
  96.  
  97.     list = get_all_prise(res,list);
  98.  
  99.         gtk_init(&argc, &argv);
  100.  
  101.         displayUI(list->field);
  102.  
  103.         gtk_main();
  104.  
  105.  
  106.  
  107.     PQfinish(conn);
  108.  
  109.         return EXIT_SUCCESS;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement