Archivos por Etiqueta: C

Syslog en C

23 nov

La función syslog envía un mensaje de registro para el servicio de registro. Esto es útil cuando queremos crean un registro con los acontecimientos que van sucediendo en el código y deseamos guardarlos en el log del sistema.

Ejemplo para guardar un mensaje con log:

#include <syslog.h>
#include <stdio.h>
#include <stdlib.h> 

int main(){

	openlog("slog", LOG_PID|LOG_CONS, LOG_USER);
	syslog(LOG_INFO, "Una forma distinta de Hola Mundo ... ");
	closelog();

	return 0;
}

openlog con “slog” crea un identificador que ira antes del mensaje “Una forma distinta de Hola Mundo … “. Esto no es necesario si no se desea imprimir este identificador. Por su parte closelog cerrara el openlog.

La salida sera asi:

Nov 23 22:40:38 leonardo-pc slog[3902]: Una forma distinta de Hola Mundo ... 

Aquí podemos notar que se imprime el identificador slog junto al PID correspondiente al proceso que lo ejecuto.

Ejemplo de error con syslog:

#include <syslog.h>
#include <stdio.h>
#include <stdlib.h>

int main(){
    FILE *fichero;

    fichero = fopen("no_existe","r");
    if(!fichero)
        syslog(LOG_ERR|LOG_USER,"Error - %m\n");

    return 0;
}

En este ejemplo se ve que no es necesario utilizar tanto el openlog como el closelog. %m mostrara el error especifico que se produjo.

La salida sera asi:

Nov 23 22:43:21 leonardo-pc ejemplo: Error - No such file or directory

Podemos notar que como no utilizamos openlog muestra solo el nombre del programa que ejecuto el código, aquí se llama ejemplo

Conactar MySQL en C

23 nov

En este tutorial vamos a aprender a como crear una conexión con una Base de Datos en MySQL en lenguaje C. Lo primero visiten el siguiente enlace para ver como instalar los paquetes y librerías de MySQL en caso de no tenerlas.

A continuación el código, cada función sera explicada mas abajo:

#include <stdio.h>
#include <mysql/mysql.h> 

MYSQL mi_conexion;
MYSQL_RES *res_ptr;
MYSQL_ROW sqlrow;

void ver_celda();

int main(int argc, char *argv[]){
	int res;

	mysql_init(&mi_conexion);

	if(mysql_real_connect(&mi_conexion, "localhost", "usuario","contraseña", "base_de_datos", 0, NULL, 0)){
		printf("Conexion exitosa\n");
		res = mysql_query(&mi_conexion, "SELECT * FROM tabla");
		if(res){
			printf("Error en SELECT: %s\n", mysql_error(&mi_conexion));
		}
		else{
			res_ptr = mysql_use_result(&mi_conexion);
			if(res_ptr){
				while((sqlrow = mysql_fetch_row(res_ptr))){
					printf("Obteniendo dato...\n");
					ver_celda();
				}
			}
		}
	}
}
void ver_celda(){
	unsigned int contador;
	contador = 0;
	while(contador < mysql_field_count(&mi_conexion)){
		printf("%s ", sqlrow[contador]);
		contador++;
	}
	printf("\n");
}
  • mysql_init(&mi_conexion): Esto inicializa el identificador de conexión MySQL mi_conexion.
  • mysql_real_connect: Esto hace la conexión con la base de datos. Los parámetros son auto explicativos, pero por si acaso:
    1. &mi_conexion: Es el puntero de la conexión para identificar la estructura, que debe estar inicializado con mysql_init.
    2. “localhost”: Este es el nombre del host o la dirección IP.
    3. “usuario”: Es el usuario para la conexión de MySQL, generalmente es root, a menos que se haya cambiado.
    4. “contraseña”: Pues eso, la contraseña para la conexión con MySQL
    5. “base_de_datos”: Aquí va el nombre de la base de datos. Ejemplo codex
    6. 0: Este cero corresponde al numero del puerto, debería ser siempre 0 a menos que se haya cambiado.
    7. NULL: Corresponde al nombre del socket de Unix, también debería ser siempre NULL, a menos que se haya cambiado.
    8. 0: Corresponde a banderas, debería ser siempre 0 a menos que se haya cambiado.
  • mysql_query: Esto toma el puntero de la estructura de la conexión y lo recorre hasta encontrar una cadena de texto SQL valida. Devuelve un cero si ha sido exitosa.
  • mysql_error: Proporciona información útil en caso de error.
  • mysql_use_result: Recupera los datos entregados por SELECT
  • mysql_fetch_row: Recupera la siguiente fila de un conjunto de resultados. Devuelve NULL si no quedan filas por recuperar o si se ha producido un error.
  • mysql_field_count: Devuelve el número de columnas para la consulta más reciente de la conexión mysql.

Para compilar este código utilizamos el siguiente comando:

gcc -o ejemplo_mysql -lmysqlclient ejemplo_mysql.c

Para ejecutarlo:

./ejemplo_mysql

Y la correspondiente salida:

Conexion exitosa
Obteniendo dato...
1 linux
Obteniendo dato...
2 ubuntu
Obteniendo dato...
3 mysql

Instalar MySQL en Ubuntu Karmic Koala

19 nov

MySQL es un Sistema Gestor de Bases de Datos muy completo y utilizado para el desarrollo de aplicaciones web. Es multiplataforma, fácil de instalar y configurar.

Para instalarlo ejecutamos el siguiente código:

sudo apt-get install mysql-server mysql-common mysql-client

Durante la instalación nos pedirá que creemos una password para el usuario root de MySQL, la cual usaremos para conectarnos a la base de datos.

Luego con el siguiente comando nos conectamos a la base de datos, en donde nos pedirá la clave del usuario root que creamos en el paso anterior:

mysql -u root -p

Una vez dentro creamos la base de datos con:

CREATE DATABASE nombre_base_de_datos;

En nombre_base_de_datos colocan el nombre de su base de datos. Ej: codex.

Para salir de mysql, ejecutan:

exit

Si tenemos un script para instalar una base de datos, lo movemos a la carpeta de tu usuario y ejecutamos el siguiente código:

mysql -u root -p nombre_de_la_base_de_datos < /home/leonardo/basededatos.sql

Deben cambiar nombre_base_de_datos por el nombre de su base datos. Ej: codex. Y cambiar leonardo por el nombre de su usuario. Una vez ejecutado lo anterior nos pedirá la password del primer paso. Al ejecutar el comando no se asusten ya que no entrega ningún mensaje, solo deben asustarse si la salida del código es un error.

Finalmente si estamos creando un programa en C y necesitamos conectarnos a la base de datos debemos incluir la librería #include <mysql/mysql.h> y para compilarlo ejecutaremos la siguiente sintaxis:

gcc -o ejecutable -lmysqlclient codigo_fuente.c

Además deberemos instalar los siguientes paquetes o sino no reconocerá la librería #include <mysql/mysql.h>:

sudo apt-get install libmysqlclient-dev libmysqlclient16 libmysqlclient16-dev

Ahora estamos listo para crear programas en C que se conecten a una base de datos.

Seguir

Get every new post delivered to your Inbox.