vc++ se conecta a la base de datos MYSQL
MySQL proporciona una gran cantidad de API de interfaz de datos, incluidas C, C++, Perl, PHP, Python, TCL y otras API e interfaces
JDBC y ODBC. Por razones de rendimiento, utilizamos la API C de MySQL para el desarrollo. Ahora tome el entorno Visual C++
como ejemplo para dar una breve introducción.
---- Cree un nuevo proyecto de aplicación de consola Win32 y agregue "c:\mysql\include" a la ruta de inclusión de las opciones de compilación (agréguelo en Opciones del proyecto /I "d:\mysql\ incluir&quounter.cgol.net Jiamanlong?
#include
#include
#include
#include
int main( int argc, char * argv[] )
{
char szTargetDSN[ ] = "prueba";
char szSqlText[500]="";
char aszFlds[ 25 ][ 25 ]
MYSQL * myData ; /p>
MYSQL_RES * res ;
MYSQL_FIELD * fd
MYSQL_ROW fila
int i,j,k
BOOL bCreate = TRUE;
if ( (myData = mysql_init((MYSQL*) 0))
//Inicializar estructura de datos
&& mysql_real_connect( myData, NULL,
//Conectar a la base de datos
"root", " your_password ", szTargetDSN,
MYSQL_PORT, NULL, 0 ) ) p>
{
if(bCreate)
{
sprintf(szSqlText, //Construir sentencia SQL
"create table mytable "
//Crear una nueva tabla
"(time datetime, s1 char(6), "
"s2 char(11), s3 int, s4 int)");
if (mysql_query( myData, szSqlText))
//Ejecutar sentencia SQL
{//Error al ejecutar sentencia SQL
ErrLog( "No se puede crear la tabla")
mysql_close( myData )
return FALSE
}
p>
}
sprintf(szSqlText,
"insertar en mytable "
//Insertar en la tabla Insertar datos
"values('2000-3-10 21:01:30',"
//Presta atención al formato de la hora
"'Test' ,'MySQLTest' ,2000,3)");
if (mysql_query( myData, szSqlText))
{//Error al ejecutar la instrucción SQL
ErrLog ( "Can' t insertar datos en la tabla") ;
mysql_close( myData );
ret
urn FALSE ;
}
sprintf(szSqlText, "seleccione * de mitabla ");
if (mysql_query( myData, szSqlText))
//Realizar recuperación de datos
{
//Error al ejecutar la instrucción SQL
mysql_close( myData
return FALSE); ;
}
else
{
res = mysql_store_result( myData )
//Obtener consulta; Resultado
i = (int) mysql_num_rows( res );
//Obtener el número de registros válidos
printf( "Consulta: %s\n% Registros ld encontrados:
\n", szSqlText, i );
for ( i = 0 ; fd = mysql_fetch_field( res );
i++ )
strcpy( aszFlds[ i ], fd->name )
//Obtener el nombre de cada campo
for (i=1; fila = mysql_fetch_row ( res );
//Leer cada registro en secuencia
{j = mysql_num_fields( res); registro
printf( "Registro #%ld:-\n", i++ )
for ( k = 0 ; k < j ; k++ )
// Muestra el valor de cada campo de
printf( " Fld #%d (%s): %s\n", k + 1, aszFlds[ k ],
( ((fila[k] ==NULL)||
(!strlen(fila[k])))?"NULL":fila[k])); ( "==== ==========================\n" )
}
mysql_free_result( res )
}
}
else
{//Error al conectarse a la base de datos
ErrLog( "No se puede conectar al servidor mysql ")
mysql_close( myData )
return FALSE
}
;mysql_close( myData )
return TRUE ;
}
---- Para una breve explicación de varias de las funciones, para una explicación detallada. , consulte la documentación de MySQL:
---- 1. MYSQL *mysql_init(MYSQL *mysql)
---- Inicialice una estructura de datos de tipo MYSQL en preparación para ejecutando mysql_real_connect(). El parámetro
mysql es un puntero a la estructura. Si mysql es NULL, se crea e inicializa una nueva estructura de datos MYSQL.
La estructura recién creada se publicará en mysql_close().
---- Si tiene éxito, devuelve el puntero de la estructura de datos MYSQL inicializada; de lo contrario, devuelve NULL.
---- 2. MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,
---- const char *usuario, const char *contraseña, const char * db,
---- unsigned int port, const char *unix_socket, unsigned int client_flag)
---- Establece una conexión con el motor de base de datos MySQL. Antes de realizar más operaciones de datos, debe asegurarse de que mysql_re
al_connect() regrese correctamente.
---- El parámetro mysql es el valor de retorno de mysql_init();
---- El parámetro host es el nombre de host TCP/IP de la máquina que ejecuta MySQL. motor de base de datos, como NULL por defecto es "lo
calhost"
---- Los parámetros usuario y contraseña son los usuarios y contraseñas legales de la base de datos MySQL
--- - El parámetro db es el nombre de la base de datos conectada
---- Los parámetros port, unix_socket y client_flag generalmente toman el valor predeterminado.
---- 3. int mysql_query(MYSQL *mysql, const char *query)
---- Ejecute la instrucción SQL en la cadena de consulta. La consulta debe terminar con. 0. Si tiene éxito, devuelve 0.
---- 4. MYSQL_RES *mysql_store_result(MYSQL *mysql)
---- Devuelve los resultados de la ejecución de SELECT, SHOW, DESCRIBE, EXPLAIN y otras declaraciones. La función crea una nueva estructura de datos MYSQL_
RES y almacena los resultados en la estructura. Si la consulta no tiene resultados coincidentes, se devuelve un conjunto de datos vacío.
Después de procesar el conjunto de resultados, se debe llamar a mysql_free_result().
---- Si se produce un error, se devuelve NULL; de lo contrario, se devuelve el puntero a la estructura MYSQL_RES.
---- 5. MYSQL_ROW mysql_fetch_row(MYSQL_RES *resultado)
---- Recupera el siguiente registro en el conjunto de resultados. Si no hay ningún registro o se produce un error, Se devuelve NULO. El número de campos en un registro se puede obtener con mysql_num_fields(resultado), y el valor de cada campo se puede obtener de la fila[0] a la fila[mysql_nu
m_fields(resultado)-1] matriz para acceso.
---- En las opciones de enlace del proyecto, agregue la biblioteca de interfaz de c:\mysql\lib\libmysql.lib y copie libmysql.d
ll al sistema operativo Directorio del sistema (c:\winnt\system32), puede compilarlo y ejecutarlo.
---- Hasta este punto, se ha desarrollado una aplicación de base de datos sencilla. Por supuesto, MySQL tiene un conjunto de AP
I con muchas funciones, puede consultar la documentación. Además, si necesita portabilidad multiplataforma, puede considerar utilizar la interfaz ODBC de MySQL
. Puede configurar las propiedades de conexión ODBC de MySQL usted mismo o puede descargar el kit de herramientas myodbc-2.50.29-nt.zip para configurarlo.