Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.88 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.         GtkWidget *frame = gtk_fixed_new();
  60.         gtk_fixed_put(GTK_FIXED(frame), button, 50, 50);        
  61.         gtk_button_set_relief(button,GTK_RELIEF_HALF);
  62.         gtk_widget_set_size_request (button,100,100);
  63.         gtk_window_set_default_size(GTK_WINDOW(mainWindow), 400, 300);
  64.         gtk_window_set_title(GTK_WINDOW(mainWindow), "GTK Simple Example");
  65.         gtk_window_set_position(GTK_WINDOW(mainWindow), GTK_WIN_POS_CENTER_ALWAYS);
  66.         gtk_signal_connect(GTK_OBJECT(mainWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
  67.         gtk_container_add (GTK_CONTAINER (mainWindow), frame);
  68.         gtk_widget_show_all(mainWindow);
  69. }
  70.  
  71. int main(int argc, char *argv[])
  72. {
  73.     const char *conninfo;
  74.     PGconn     *conn;
  75.     PGresult   *res;
  76.     struct values *list = malloc(sizeof(struct values));
  77.     int         nFields;
  78.     int         i,j;
  79.    
  80.     conninfo = "host=localhost port=5432 dbname=srv user=postgres password=--117";
  81.  
  82.     conn = PQconnectdb(conninfo);
  83.  
  84.     if (PQstatus(conn) != CONNECTION_OK)
  85.     {
  86.         fprintf(stderr, "Connection to database failed: %s",
  87.                 PQerrorMessage(conn));
  88.         exit_nicely(conn);
  89.     }
  90.  
  91.     res = PQexec(conn, "select * from prise");
  92.     if (PQresultStatus(res) != PGRES_TUPLES_OK)
  93.     {
  94.         fprintf(stderr, "Select failed: %s", PQerrorMessage(conn));
  95.         PQclear(res);
  96.         exit_nicely(conn);
  97.     }
  98.  
  99.     list = get_all_prise(res,list);
  100.  
  101.  
  102.         gtk_init(&argc, &argv);
  103.  
  104.         displayUI(list->field);
  105.  
  106.         gtk_main();
  107.  
  108.  
  109.  
  110.     PQfinish(conn);
  111.  
  112.         return EXIT_SUCCESS;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement