connect a MySQL database via ODBC from a C program

Hello,

I want to connect a MySQL database via ODBC from a C program in Visual
Studio 2008 Windows.

I have Mysql version 4.0.15 (esayphp 1.7)
and mysql-connector-odbc-3.51.19-win32

I tested the data source (ODBC)that I've created with the database and
it connects normally.

the DSN name is : toto
the server name is : localhost
the username : root
the password: vide


Here's a part of my C program:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
#include<string.h>

#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>

#include <sqlucode.h>
#include <odbcinst.h>
#include <Msdasql.h>
#include <Msdadc.h>


void main()
{
SQLRETURN retcode;
//char design[20];
//int A,B,C,D;
//char request[100];
//char dsn[20]="toto";
//char uid[20]="root";
//char pwd[20]="";
SQLINTEGER lon,la,lb,lc,ld,taille=SQL_NTS;
SQLCHAR design[20];
SQLHDBC hdbc;
SQLHENV henv;
SQLHSTMT hstmt;


/*Allocate environment handle */
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) //{
/* Set the ODBC version environment attribute */
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) //{
/* Allocate connection handle */
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

// if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)

//printf("%s","vrai");
//else
//printf("erreur\n");
// }

//}


// retcode = SQLConnect(hdbc,(SQLCHAR*)dsn,
SQL_NTS,(SQLCHAR*)uid, SQL_NTS,(SQLCHAR*)pwd, SQL_NTS);
retcode=SQLConnect(hdbc,(SQLCHAR *)"toto",SQL_NTS,(SQLCHAR
*)"root",SQL_NTS,(SQLCHAR *)"",SQL_NTS);
printf("%d",retcode);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
printf("\n%s","vrai");
else
printf("Erreur sur l'instruction SQLConnect !\\n");

}





After the compilation and execution I get the following message:

retcode = - 1 // it is the value of return of SQLConnect

Error on the SQLConnect instruction Impossible to be connected to the
data source:

1. [

- That is what this error message means?: 1. [

--
MySQL ODBC Mailing List
For list archives: http://lists.mysql.com/myodbc
To unsubscribe: http://lists.mysql.com/myodbc?unsub=gcdmo-myodbc [at] m.gmane.org
asma bouali [ Di, 14 Juli 2009 17:28 ] [ ID #2008442 ]

Re: connect a MySQL database via ODBC from a C program

asma bouali wrote:
> Hello,
>
> I want to connect a MySQL database via ODBC from a C program in Visual
> Studio 2008 Windows.
>
> I have Mysql version 4.0.15 (esayphp 1.7)
> and mysql-connector-odbc-3.51.19-win32
>
> I tested the data source (ODBC)that I've created with the database and
> it connects normally.
>
> the DSN name is : toto
> the server name is : localhost
> the username : root
> the password: vide
>
>
> Here's a part of my C program:
> #include <windows.h>
> #include <stdio.h>
> #include <conio.h>
> #include<stdlib.h>
> #include<string.h>
>
> #include <sql.h>
> #include <sqlext.h>
> #include <sqltypes.h>
>
> #include <sqlucode.h>
> #include <odbcinst.h>
> #include <Msdasql.h>
> #include <Msdadc.h>
>
>
> void main()
> {
> SQLRETURN retcode;
> //char design[20];
> //int A,B,C,D;
> //char request[100];
> //char dsn[20]="toto";
> //char uid[20]="root";
> //char pwd[20]="";
> SQLINTEGER lon,la,lb,lc,ld,taille=SQL_NTS;
> SQLCHAR design[20];
> SQLHDBC hdbc;
> SQLHENV henv;
> SQLHSTMT hstmt;
>
>
> /*Allocate environment handle */
> retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
>
> if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) //{
> /* Set the ODBC version environment attribute */
> retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
>
> if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) //{
> /* Allocate connection handle */
> retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
>
> // if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
>
> //printf("%s","vrai");
> //else
> //printf("erreur\n");
> // }
>
> //}
>
>
> // retcode = SQLConnect(hdbc,(SQLCHAR*)dsn,
> SQL_NTS,(SQLCHAR*)uid, SQL_NTS,(SQLCHAR*)pwd, SQL_NTS);
> retcode=SQLConnect(hdbc,(SQLCHAR *)"toto",SQL_NTS,(SQLCHAR
> *)"root",SQL_NTS,(SQLCHAR *)"",SQL_NTS);
> printf("%d",retcode);
> if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
> printf("\n%s","vrai");
> else
> printf("Erreur sur l'instruction SQLConnect !\\n");
>
> }
>
>
>
>
>
> After the compilation and execution I get the following message:
>
> retcode = - 1 // it is the value of return of SQLConnect
>
> Error on the SQLConnect instruction Impossible to be connected to the
> data source:
>
> 1. [
>
> - That is what this error message means?: 1. [
>

I already replied to this posting when you posted it a few days ago when
I said:

I suggest you call SQLError or preferably, SQLGetDiagRec (as you are
asking for ODBC 3) after the connect call fails to find out what is
wrong with your connect call.

Also, you can use the SQL_SUCCEEDED macro instead of always checking for
SQL_SUCCESS and SQL_SUCCESS_WITH_INFO.

Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

--
MySQL ODBC Mailing List
For list archives: http://lists.mysql.com/myodbc
To unsubscribe: http://lists.mysql.com/myodbc?unsub=gcdmo-myodbc [at] m.gmane.org
Martin Evans [ Mi, 15 Juli 2009 09:39 ] [ ID #2008589 ]
Datenbanken » gmane.comp.db.mysql.odbc » connect a MySQL database via ODBC from a C program

Vorheriges Thema: ODBC Connector 5.1.5 'text' field insert failure
Nächstes Thema: Connecter au Mysql via ODBC à partir d'un programme