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