~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to examples/simple.cc

  • Committer: Olaf van der Spek
  • Date: 2011-08-06 22:31:11 UTC
  • mfrom: (2386 drizzle)
  • mto: This revision was merged to the branch mainline in revision 2396.
  • Revision ID: olafvdspek@gmail.com-20110806223111-irz1ie6xoy4q0prc
Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
 *
35
35
 */
36
36
 
37
 
#include <cstdio>
38
37
#include <cstdlib>
39
38
#include <cstring>
40
39
#include <getopt.h>
41
 
#include <libdrizzle/drizzle_client.h>
 
40
#include <iostream>
 
41
#include <libdrizzle/libdrizzle.hpp>
42
42
#include <netdb.h>
43
43
#include <unistd.h>
44
44
 
 
45
using namespace std;
 
46
 
45
47
int main(int argc, char *argv[])
46
48
{
47
49
  const char* db= "information_schema";
48
50
  const char* host= NULL;
 
51
  const char* user= NULL;
 
52
  const char* password= NULL;
49
53
  bool mysql= false;
50
54
  in_port_t port= 0;
51
55
  const char* query= "select table_schema, table_name from tables";
52
56
  drizzle_verbose_t verbose= DRIZZLE_VERBOSE_NEVER;
53
57
 
54
 
  for (int c; (c = getopt(argc, argv, "d:h:mp:q:v")) != -1; )
 
58
  for (int c; (c = getopt(argc, argv, "d:h:mp:u:P:q:v")) != -1; )
55
59
  {
56
60
    switch (c)
57
61
    {
68
72
      break;
69
73
 
70
74
    case 'p':
71
 
      port= (in_port_t)atoi(optarg);
 
75
      port= static_cast<in_port_t>(atoi(optarg));
 
76
      break;
 
77
 
 
78
    case 'u':
 
79
      user= optarg;
 
80
      break;
 
81
 
 
82
    case 'P':
 
83
      password = optarg;
72
84
      break;
73
85
 
74
86
    case 'q':
76
88
      break;
77
89
 
78
90
    case 'v':
79
 
      switch (verbose)
80
 
      {
81
 
      case DRIZZLE_VERBOSE_NEVER:
82
 
        verbose= DRIZZLE_VERBOSE_FATAL;
83
 
        break;
84
 
      case DRIZZLE_VERBOSE_FATAL:
85
 
        verbose= DRIZZLE_VERBOSE_ERROR;
86
 
        break;
87
 
      case DRIZZLE_VERBOSE_ERROR:
88
 
        verbose= DRIZZLE_VERBOSE_INFO;
89
 
        break;
90
 
      case DRIZZLE_VERBOSE_INFO:
91
 
        verbose= DRIZZLE_VERBOSE_DEBUG;
92
 
        break;
93
 
      case DRIZZLE_VERBOSE_DEBUG:
94
 
        verbose= DRIZZLE_VERBOSE_CRAZY;
95
 
        break;
96
 
      case DRIZZLE_VERBOSE_CRAZY:
97
 
      case DRIZZLE_VERBOSE_MAX:
98
 
        break;
99
 
      }
 
91
      if (verbose < DRIZZLE_VERBOSE_MAX)
 
92
        verbose= static_cast<drizzle_verbose_t>(verbose + 1);
100
93
      break;
101
94
 
102
95
    default:
103
 
      printf("usage: %s [-d <db>] [-h <host>] [-m] [-p <port>] [-q <query>] "
104
 
             "[-v]\n", argv[0]);
105
 
      printf("\t-d <db>    - Database to use for query\n");
106
 
      printf("\t-h <host>  - Host to listen on\n");
107
 
      printf("\t-m         - Use the MySQL protocol\n");
108
 
      printf("\t-p <port>  - Port to listen on\n");
109
 
      printf("\t-q <query> - Query to run\n");
110
 
      printf("\t-v         - Increase verbosity level\n");
 
96
      cout << 
 
97
        "usage: " << argv[0] << " [-d <db>] [-h <host>] [-m] [-p <port>] [-q <query>] [-v]\n"
 
98
        "\t-d <db>    - Database to use for query\n"
 
99
        "\t-h <host>  - Host to connect to\n"
 
100
        "\t-m         - Use the MySQL protocol\n"
 
101
        "\t-p <port>  - Port to connect to\n"
 
102
        "\t-u <user>  - User\n"
 
103
        "\t-P <pass>  - Password\n"
 
104
        "\t-q <query> - Query to run\n"
 
105
        "\t-v         - Increase verbosity level\n";
111
106
      return 1;
112
107
    }
113
108
  }
114
109
 
115
 
  drizzle_st drizzle;
116
 
  if (drizzle_create(&drizzle) == NULL)
117
 
  {
118
 
    printf("drizzle_create:NULL\n");
119
 
    return 1;
120
 
  }
121
 
 
122
 
  drizzle_set_verbose(&drizzle, verbose);
123
 
 
124
 
  drizzle_con_st* con= new drizzle_con_st;
125
 
  if (drizzle_con_create(&drizzle, con) == NULL)
126
 
  {
127
 
    printf("drizzle_con_create:NULL\n");
128
 
    return 1;
129
 
  }
130
 
 
 
110
  drizzle::drizzle_c drizzle;
 
111
  drizzle_set_verbose(&drizzle.b_, verbose);
 
112
  drizzle::connection_c* con= new drizzle::connection_c(drizzle);
131
113
  if (mysql)
132
 
    drizzle_con_add_options(con, DRIZZLE_CON_MYSQL);
133
 
 
134
 
  drizzle_con_set_tcp(con, host, port);
135
 
  drizzle_con_set_db(con, db);
136
 
 
137
 
  drizzle_result_st result;
138
 
  drizzle_return_t ret;
139
 
  (void)drizzle_query_str(con, &result, query, &ret);
140
 
  if (ret != DRIZZLE_RETURN_OK)
141
 
  {
142
 
    printf("drizzle_query:%s\n", drizzle_con_error(con));
143
 
    return 1;
144
 
  }
145
 
 
146
 
  ret= drizzle_result_buffer(&result);
147
 
  if (ret != DRIZZLE_RETURN_OK)
148
 
  {
149
 
    printf("drizzle_result_buffer:%s\n", drizzle_con_error(con));
150
 
    return 1;
151
 
  }
152
 
 
153
 
  while (drizzle_row_t row= drizzle_row_next(&result))
154
 
  {
155
 
    for (int x= 0; x < drizzle_result_column_count(&result); x++)
156
 
      printf("%s%s", x == 0 ? "" : ":", row[x] == NULL ? "NULL" : row[x]);
157
 
    printf("\n");
158
 
  }
159
 
 
160
 
  drizzle_result_free(&result);
161
 
  drizzle_con_free(con);
162
 
  drizzle_free(&drizzle);
163
 
  delete con;
 
114
    drizzle_con_add_options(&con->b_, DRIZZLE_CON_MYSQL);
 
115
  con->set_tcp(host, port);
 
116
  con->set_auth(user, password);
 
117
  con->set_db(db);
 
118
  drizzle::result_c result;
 
119
  if (con->query(result, query))
 
120
  {
 
121
    cerr << "query: " << con->error() << endl;
 
122
    return 1;
 
123
  }
 
124
  while (drizzle_row_t row= result.row_next())
 
125
  {
 
126
    for (int x= 0; x < result.column_count(); x++)
 
127
    {
 
128
      if (x)
 
129
        cout << ", ";
 
130
      cout << (row[x] ? row[x] : "NULL");
 
131
    }
 
132
    cout << endl;
 
133
  }
164
134
  return 0;
165
135
}