libdrizzle Public API Documentation

simple.c
Go to the documentation of this file.
1 /*
2  * Drizzle Client & Protocol Library
3  *
4  * Copyright (C) 2008 Eric Day (eday@oddments.org)
5  * All rights reserved.
6  *
7  * Use and distribution licensed under the BSD license. See
8  * the COPYING file in this directory for full text.
9  */
10 
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include <string.h>
14 #include <unistd.h>
15 
17 
18 int main(int argc, char *argv[])
19 {
20  int c;
21  const char *db= "INFORMATION_SCHEMA";
22  const char *host= NULL;
23  bool mysql= false;
24  in_port_t port= 0;
25  const char *query= "SELECT TABLE_SCHEMA,TABLE_NAME FROM TABLES";
27  drizzle_st drizzle;
28  drizzle_con_st con;
29  drizzle_result_st result;
30  drizzle_return_t ret;
31  int x;
32  char **row;
33 
34  while ((c = getopt(argc, argv, "d:h:mp:q:v")) != -1)
35  {
36  switch(c)
37  {
38  case 'd':
39  db= optarg;
40  break;
41 
42  case 'h':
43  host= optarg;
44  break;
45 
46  case 'm':
47  mysql= true;
48  break;
49 
50  case 'p':
51  port= (in_port_t)atoi(optarg);
52  break;
53 
54  case 'q':
55  query= optarg;
56  break;
57 
58  case 'v':
59  verbose++;
60  break;
61 
62  default:
63  printf("usage: %s [-d <db>] [-h <host>] [-m] [-p <port>] [-q <query>] "
64  "[-v]\n", argv[0]);
65  printf("\t-d <db> - Database to use for query\n");
66  printf("\t-h <host> - Host to listen on\n");
67  printf("\t-m - Use the MySQL protocol\n");
68  printf("\t-p <port> - Port to listen on\n");
69  printf("\t-q <query> - Query to run\n");
70  printf("\t-v - Increase verbosity level\n");
71  return 1;
72  }
73  }
74 
75  if (drizzle_create(&drizzle) == NULL)
76  {
77  printf("drizzle_create:NULL\n");
78  return 1;
79  }
80 
81  drizzle_set_verbose(&drizzle, verbose);
82 
83  if (drizzle_con_create(&drizzle, &con) == NULL)
84  {
85  printf("drizzle_con_create:NULL\n");
86  return 1;
87  }
88 
89  if (mysql)
91 
92  drizzle_con_set_tcp(&con, host, port);
93  drizzle_con_set_db(&con, db);
94 
95  (void)drizzle_query_str(&con, &result, query, &ret);
96  if (ret != DRIZZLE_RETURN_OK)
97  {
98  printf("drizzle_query:%s\n", drizzle_con_error(&con));
99  return 1;
100  }
101 
102  ret= drizzle_result_buffer(&result);
103  if (ret != DRIZZLE_RETURN_OK)
104  {
105  printf("drizzle_result_buffer:%s\n", drizzle_con_error(&con));
106  return 1;
107  }
108 
109  while ((row= (char **)drizzle_row_next(&result)) != NULL)
110  {
111  for (x= 0; x < drizzle_result_column_count(&result); x++)
112  printf("%s%s", x == 0 ? "" : ":", row[x] == NULL ? "NULL" : row[x]);
113  printf("\n");
114  }
115 
116  drizzle_result_free(&result);
117  drizzle_con_free(&con);
118  drizzle_free(&drizzle);
119 
120  return 0;
121 }