mysql.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /* $Id: mysql.c,v 1.5 2001/04/12 22:45:29 kilobug Exp $ */
  2. #include "mclient.h"
  3. int mysql_query_gtk(MYSQL *mysql, const char *query)
  4. {
  5. int i;
  6. GtkWidget *wi;
  7. char buf[MYSQL_BUFFER_SIZE];
  8. i = mysql_query(mysql, query);
  9. if (i)
  10. {
  11. g_snprintf(buf, MYSQL_BUFFER_SIZE,
  12. "> %s <\n\n"
  13. "(Requète = `%s')\n", mysql_error(mysql), query);
  14. wi = create_dialog("Erreur SQL", create_label(buf), NULL, " Fermer ",
  15. NULL, NULL, destroy_widget);
  16. gtk_widget_show(wi);
  17. }
  18. return i;
  19. }
  20. static MYSQL_RES *mysql_get_result_v(MYSQL *mysql, const char *query,
  21. va_list ap)
  22. {
  23. char mysql_buffer[MYSQL_BUFFER_SIZE];
  24. g_vsnprintf(mysql_buffer, MYSQL_BUFFER_SIZE, query, ap);
  25. if (mysql_query_gtk(mysql, mysql_buffer))
  26. return NULL;
  27. return mysql_store_result(mysql);
  28. }
  29. static MYSQL_ROW mysql_get_row_v(MYSQL *mysql, const char *query,
  30. va_list ap)
  31. {
  32. MYSQL_ROW row;
  33. static MYSQL_RES *res = NULL;
  34. if (res != NULL)
  35. mysql_free_result(res);
  36. if ((res = mysql_get_result_v(mysql, query, ap)) == NULL)
  37. return NULL;
  38. row = mysql_fetch_row(res);
  39. return row;
  40. }
  41. static char *mysql_get_str_v(MYSQL *mysql, const char *query, va_list ap)
  42. {
  43. MYSQL_ROW row;
  44. row = mysql_get_row_v(mysql, query, ap);
  45. if (row == NULL)
  46. return g_strdup("");
  47. else
  48. return g_strdup(row[0]);
  49. }
  50. int mysql_get_int(MYSQL *mysql, const char *query, ...)
  51. {
  52. va_list ap;
  53. int i;
  54. char *s;
  55. va_start(ap, query);
  56. s = mysql_get_str_v(mysql, query, ap);
  57. i = atoi(s);
  58. g_free(s);
  59. va_end(ap);
  60. return i;
  61. }
  62. char *mysql_get_str(MYSQL *mysql, const char *query, ...)
  63. {
  64. va_list ap;
  65. char *s;
  66. va_start(ap, query);
  67. s = mysql_get_str_v(mysql, query, ap);
  68. va_end(ap);
  69. return s;
  70. }
  71. void mysql_do_query(MYSQL *mysql, const char *query, ...)
  72. {
  73. va_list ap;
  74. va_start(ap, query);
  75. mysql_get_result_v(mysql, query, ap);
  76. va_end(ap);
  77. }