Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <stdio.h>
00012 #include <stdlib.h>
00013 #include <string.h>
00014 #include <unistd.h>
00015 #include <netdb.h>
00016 #include <getopt.h>
00017
00018 #include <libdrizzle/drizzle_client.h>
00019
00020 int main(int argc, char *argv[])
00021 {
00022 int c;
00023 const char *db= "INFORMATION_SCHEMA";
00024 const char *host= NULL;
00025 bool mysql= false;
00026 in_port_t port= 0;
00027 const char *query= "SELECT TABLE_SCHEMA,TABLE_NAME FROM TABLES";
00028 drizzle_verbose_t verbose= DRIZZLE_VERBOSE_NEVER;
00029 drizzle_st drizzle;
00030 drizzle_con_st con;
00031 drizzle_result_st result;
00032 drizzle_return_t ret;
00033 int x;
00034 char **row;
00035
00036 while ((c = getopt(argc, argv, "d:h:mp:q:v")) != -1)
00037 {
00038 switch(c)
00039 {
00040 case 'd':
00041 db= optarg;
00042 break;
00043
00044 case 'h':
00045 host= optarg;
00046 break;
00047
00048 case 'm':
00049 mysql= true;
00050 break;
00051
00052 case 'p':
00053 port= (in_port_t)atoi(optarg);
00054 break;
00055
00056 case 'q':
00057 query= optarg;
00058 break;
00059
00060 case 'v':
00061 verbose++;
00062 break;
00063
00064 default:
00065 printf("usage: %s [-d <db>] [-h <host>] [-m] [-p <port>] [-q <query>] "
00066 "[-v]\n", argv[0]);
00067 printf("\t-d <db> - Database to use for query\n");
00068 printf("\t-h <host> - Host to listen on\n");
00069 printf("\t-m - Use the MySQL protocol\n");
00070 printf("\t-p <port> - Port to listen on\n");
00071 printf("\t-q <query> - Query to run\n");
00072 printf("\t-v - Increase verbosity level\n");
00073 return 1;
00074 }
00075 }
00076
00077 if (drizzle_create(&drizzle) == NULL)
00078 {
00079 printf("drizzle_create:NULL\n");
00080 return 1;
00081 }
00082
00083 drizzle_set_verbose(&drizzle, verbose);
00084
00085 if (drizzle_con_create(&drizzle, &con) == NULL)
00086 {
00087 printf("drizzle_con_create:NULL\n");
00088 return 1;
00089 }
00090
00091 if (mysql)
00092 drizzle_con_add_options(&con, DRIZZLE_CON_MYSQL);
00093
00094 drizzle_con_set_tcp(&con, host, port);
00095 drizzle_con_set_db(&con, db);
00096
00097 (void)drizzle_query_str(&con, &result, query, &ret);
00098 if (ret != DRIZZLE_RETURN_OK)
00099 {
00100 printf("drizzle_query:%s\n", drizzle_con_error(&con));
00101 return 1;
00102 }
00103
00104 ret= drizzle_result_buffer(&result);
00105 if (ret != DRIZZLE_RETURN_OK)
00106 {
00107 printf("drizzle_result_buffer:%s\n", drizzle_con_error(&con));
00108 return 1;
00109 }
00110
00111 while ((row= (char **)drizzle_row_next(&result)) != NULL)
00112 {
00113 for (x= 0; x < drizzle_result_column_count(&result); x++)
00114 printf("%s%s", x == 0 ? "" : ":", row[x] == NULL ? "NULL" : row[x]);
00115 printf("\n");
00116 }
00117
00118 drizzle_result_free(&result);
00119 drizzle_con_free(&con);
00120 drizzle_free(&drizzle);
00121
00122 return 0;
00123 }