~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to examples/simple.c

  • Committer: Monty Taylor
  • Date: 2010-08-12 20:27:32 UTC
  • mto: (1720.1.5 build)
  • mto: This revision was merged to the branch mainline in revision 1722.
  • Revision ID: mordred@inaugust.com-20100812202732-9kzchbkvkyki4n3u
Merged libdrizzle directly into tree.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
16
#include <libdrizzle/drizzle_client.h>
 
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";
 
26
  drizzle_verbose_t verbose= DRIZZLE_VERBOSE_NEVER;
 
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)
 
90
    drizzle_con_add_options(&con, DRIZZLE_CON_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
}