libdrizzle Developer Documentation

examples/simple_multi.c
Go to the documentation of this file.
00001 /*
00002  * Drizzle Client & Protocol Library
00003  *
00004  * Copyright (C) 2008 Eric Day (eday@oddments.org)
00005  * All rights reserved.
00006  *
00007  * Use and distribution licensed under the BSD license.  See
00008  * the COPYING file in this directory for full text.
00009  */
00010 
00011 #include <stdio.h>
00012 #include <string.h>
00013 
00014 #include <libdrizzle/drizzle_client.h>
00015 
00016 #define SIMPLE_MULTI_COUNT 10
00017 
00018 int main(int argc, char *argv[])
00019 {
00020   const char *query= "SELECT table_schema,table_name FROM tables";
00021   drizzle_st drizzle;
00022   drizzle_con_st con[SIMPLE_MULTI_COUNT];
00023   drizzle_result_st result[SIMPLE_MULTI_COUNT];
00024   drizzle_query_st ql[SIMPLE_MULTI_COUNT];
00025   drizzle_return_t ret;
00026   drizzle_row_t row;
00027   int x;
00028 
00029   if (drizzle_create(&drizzle) == NULL)
00030   {
00031     printf("drizzle_create:NULL\n");
00032     return 1;
00033   }
00034 
00035   /* Create SIMPLE_MULTI_COUNT connections and initialize query list. */
00036   for (x= 0; x < SIMPLE_MULTI_COUNT; x++)
00037   {
00038     if (x == 0)
00039     {
00040       if (drizzle_con_create(&drizzle, &(con[0])) == NULL)
00041       {
00042         printf("drizzle_con_create:%s\n", drizzle_error(&drizzle));
00043         return 1;
00044       }
00045 
00046       if (argc == 2 && !strcmp(argv[1], "-m"))
00047         drizzle_con_add_options(&(con[0]), DRIZZLE_CON_MYSQL);
00048       else if (argc != 1)
00049       {
00050         printf("usage: %s [-m]\n", argv[0]);
00051         return 1;
00052       }
00053 
00054       drizzle_con_set_db(&(con[0]), "information_schema");
00055     }
00056     else
00057     {
00058       if (drizzle_con_clone(&drizzle, &(con[x]), &(con[0])) == NULL)
00059       {
00060         printf("drizzle_con_clone:%s\n", drizzle_error(&drizzle));
00061         return 1;
00062       }
00063     }
00064 
00065     if (drizzle_query_add(&drizzle, &(ql[x]), &(con[x]), &(result[x]), query,
00066                           strlen(query), 0, NULL) == NULL)
00067     {
00068       printf("drizzle_query_add:%s\n", drizzle_error(&drizzle));
00069       return 1;
00070     }
00071   }
00072 
00073   ret= drizzle_query_run_all(&drizzle);
00074   if (ret != DRIZZLE_RETURN_OK)
00075   {
00076     printf("drizzle_query_run_all:%s\n", drizzle_error(&drizzle));
00077     return 1;
00078   }
00079 
00080   for (x= 0; x < SIMPLE_MULTI_COUNT; x++)
00081   {
00082     if (drizzle_result_error_code(&(result[x])) != 0)
00083     {
00084       printf("%d:%s\n", drizzle_result_error_code(&(result[x])),
00085              drizzle_result_error(&(result[x])));
00086       continue;
00087     }
00088 
00089     while ((row= drizzle_row_next(&(result[x]))) != NULL)
00090       printf("%d %s:%s\n", x, row[0], row[1]);
00091   }
00092 
00093   drizzle_free(&drizzle);
00094 
00095   return 0;
00096 }