>Description:
        In spite of many different calls to mysql_options(), I have not
        been able to get the C API to recognize an Option File.  I have
        also tried many different calls to mysql_real_connect().  I can
        use the standard ~/.my.cnf with the mysql client, but the only way
        I can get to my data with the C API is to "hard code" user and
        password values into the mysql_real_connect() call.  The error
        message I get with the C API is:
     Access denied for user: '[EMAIL PROTECTED]' (Using password: NO)
>How-To-Repeat:
/**********************************************************************
*
* File:      myslistdb.c
* Version:   1.0
* Modified:  08/10/04
* Author:    David Johnson
*
* Description:
* This program lists databases that the user who runs the program
* has access to on this 'localhost' MySQL server.
*
* Environment Variables Required:
*    none
*
* Parameters:
*    none
*
* Sample Call:  myslistdb
*
* INPUTS:
*    Choices made by the user
*
* OUTPUTS:
*    Based on the inputs, the appropriate database is
*    queried.  If the user chooses, the results of each
*    query are displayed.
*
* Modifications:
*  07/29/04  D.Johnson          Original Version
**********************************************************************/
#include <stdio.h>
#include <unistd.h>
#include <mysql.h>

#define    MAX_CHARS    80     /* maximum number of characters in input line
*/
#define    ECHO_QUERY    1
#define    SHOW_RESULTS  1
#define    NO_ECHO       0
#define    NO_RESULTS    0

MYSQL mysql;

main (argc, argv)

int   argc;     /* argument count */
char *argv[];   /* list of arguments */

{
  int        max = MAX_CHARS;
  int        res;              /* result of stat call */
  char       line [MAX_CHARS];
  char      *hostname = line;         /* pointer to buffer */
  char       query_string [MAX_CHARS];

  int do_query(char *query_string, int echo_query, int show_results);
  res=gethostname(hostname, max);
  if (res == 0) {
       /******   printf (">>Hostname=%s<<.\n", hostname);   ******/
  } else {
     printf ("  Result of FAILED gethostname call = %d\n", res);
  }

  mysql_init(&mysql);
/*************************   OPTIONS TO TRY
  strcpy(line, argv[0]);
  strcpy(line, "client");
  strcpy(line, "myslistdb");
  strcpy(line, "");
  strcpy(line, "qzjxv");
***************************/
  strcpy(line, "client");
  res = mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP, line);
  if (res != 0) {
     printf ("  FAILED mysql_options = %d for Grp=%s\n", res, line);
  }
/*************************   OPTIONS TO TRY
  if (!mysql_real_connect(&mysql,hostname,"","","",0,NULL,0)) {
  if
(!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0)) {
  if (!mysql_real_connect(&mysql,"","","","",0,NULL,0)) {
  if (!mysql_real_connect(&mysql,"localhost","ccnjdcj","","",0,NULL,0)) {
***************************/
  if (!mysql_real_connect(&mysql,"","","","",0,NULL,0)) {
    fprintf(stderr, "Failed to connect to database: Error= %s\n",
         mysql_error(&mysql));
  } else {
/*************************
    fprintf(stderr, "Successful connect to MySQL Server %s\n", p);
***************************/

    strcpy(query_string, "select user()");
    if (do_query(query_string, ECHO_QUERY, SHOW_RESULTS)) {
       fprintf(stderr, "Failed to select user(): Error= %s\n",
         mysql_error(&mysql));
    }

    strcpy(query_string, "show databases");
    if (do_query(query_string, ECHO_QUERY, SHOW_RESULTS)) {
       fprintf(stderr, "Failed to list databases: Error= %s\n",
         mysql_error(&mysql));
    }

    strcpy(query_string, "use test");
    if (do_query(query_string, ECHO_QUERY, SHOW_RESULTS)) {
       fprintf(stderr, "Failed to select test: Error= %s\n",
    if (do_query(query_string, ECHO_QUERY, SHOW_RESULTS)) {
       fprintf(stderr, "Failed to select test: Error= %s\n",
         mysql_error(&mysql));
    }

    strcpy(query_string, "show tables");
    if (do_query(query_string, ECHO_QUERY, SHOW_RESULTS)) {
       fprintf(stderr, "Failed to show tables: Error= %s\n",
         mysql_error(&mysql));
    }

/*************************
    strcpy(query_string, "show table status like '%'");
    if (do_query(query_string, ECHO_QUERY, SHOW_RESULTS)) {
       fprintf(stderr, "Failed to show table status: Error= %s\n",
         mysql_error(&mysql));
    }
***************************/

  mysql_close(&mysql);
  } /*** Successful connect to database ***/
}

int do_query(char *query_string, int echo_query, int show_results) {
  MYSQL_RES *result;
  MYSQL_ROW  row;
  int        num_fields;
  int        num_rows;
  long      *lengths;
  int        i;
    if (echo_query) {
       fprintf(stderr, "==MYSQL Query=%s\n", query_string);
    }
    if (mysql_query(&mysql, query_string)) {
       return 1;  /* query failed */
    } else { /*** Successful query ***/
/***************
       fprintf(stderr, "Successful Query\n");
******************/
       result = mysql_store_result(&mysql);
       if (result) {   // there are rows
          num_fields = mysql_num_fields(result);
/***************
          fprintf(stderr, "There were %d fields.\n", num_fields);
******************/
          if (show_results) {
             // retrieve rows
             while((row = mysql_fetch_row(result))) {
                 // do something with data
                num_fields = mysql_num_fields(result);
                lengths = mysql_fetch_lengths(result);
                for (i = 0; i < num_fields; i++) {
/***************
                   printf("Column %u is %lu bytes in length.\n", i,
lengths[i]);
******************/
                   printf("    %.*s\n", (int) lengths[i], row[i] ? row[i] :
"NUL
L");
                }
             }
          }
          if (mysql_errno(&mysql)) { // mysql_fetch_row() failed due to an
error
             fprintf(stderr, "Fetch_Row Error: %s\n", mysql_error(&mysql));
          }
          mysql_free_result(result);
       } else { // mysql_store_result() returned nothing; should it have?
          if (mysql_field_count(&mysql) == 0) {
                 // query does not return data
                 // (it was not a SELECT)
                 num_rows = mysql_affected_rows(&mysql);
          } else {   // mysql_store_result() should have returned data
            fprintf(stderr, "Store_Result Error: %s\n",
mysql_error(&mysql));
          }
       }
       return 0;  /* query succeeded */
    } /*** Successful query ***/
}

>Fix:         unknown
>Submitter-Id:  [EMAIL PROTECTED]
>Originator:    David C. Johnson
>Organization:  EDS
>MySQL support: none
>Synopsis:      Can't get C API to recognize Option File
>Severity:      non-critical
>Priority:      low
>Category:      mysql
>Class:         sw-bug
>Release:       mysql-4.0.20 (binary Solaris distribution)
>C compiler:    2.95.3
>C++ compiler:  2.95.3
>Environment:
System: SunOS blade2 5.9 Generic_112233-12 sun4u sparc SUNW,Sun-Blade-100
Architecture: sun4

Some paths:  /usr/bin/perl /usr/ccs/bin//make

Compilation info: CC='gcc'  CFLAGS='-Wimplicit -Wreturn-type -Wswitch
-Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses
-Wsign-compare -Wwrite-strings -Wunused -mcpu=pentiumpro -O3
-fno-omit-frame-pointer'  CXX='ccache gcc'  CXXFLAGS='-Wimplicit
-Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat
-Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual
-Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor
-felide-constructors -fno-exceptions -fno-rtti -mcpu=pentiumpro -O3
-fno-omit-frame-pointer'  LDFLAGS=''  ASFLAGS=''
LIBC: 
-rw-r--r--   1 root     bin      1857244 Feb 10  2004 /lib/libc.a
lrwxrwxrwx   1 root     root          11 Jul 13 09:54 /lib/libc.so ->
./libc.so.1
-rwxr-xr-x   1 root     bin       867112 Feb 10  2004 /lib/libc.so.1
-rw-r--r--   1 root     bin      1857244 Feb 10  2004 /usr/lib/libc.a
lrwxrwxrwx   1 root     root          11 Jul 13 09:54 /usr/lib/libc.so ->
./libc.so.1
-rwxr-xr-x   1 root     bin       867112 Feb 10  2004 /usr/lib/libc.so.1
Configure command: ./configure '--prefix=/usr/local/mysql'
'--enable-assembler' '--with-extra-charsets=complex' '--with-innodb'
'--with-berkeley-db' '--with-embedded-server' '--enable-thread-safe-client'
'--with-openssl' '--with-vio' '--with-raid' '--enable-local-infile'
'CFLAGS=-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W
-Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings
-Wunused -mcpu=pentiumpro -O3 -fno-omit-frame-pointer' 'CXXFLAGS=-Wimplicit
-Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat
-Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual
-Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor
-felide-constructors -fno-exceptions -fno-rtti -mcpu=pentiumpro -O3
-fno-omit-frame-pointer' 'CXX=ccache gcc'


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to