[[:oktatas:programozás:c|< C]] ====== MySQL adatbázis kezelése ====== ===== Szükséges meghajtó beszerzése ===== A meghajtóprogram letöltéséhez látogassuk meg a következő oldalt: * http://dev.mysql.com/downloads/connector/c/ Ha telepítő nélküli verziót választottuk 32-bites rendszerre (Windows (x86, 32-bit), ZIP), akkor egy ehhez hasonló állományt kapunk: * mysql-connector-c-6.1.5-win32.zip Csomagoljuk ki tetszőleges helyre. Például: c:\mysql-connector-c-6.1.5-win32\ ===== MySQL elérése szimplán ===== #include main() { MYSQL *sql; MYSQL_RES *res; MYSQL_ROW row; if (!(mysql_real_connect(sql, "localhost", "root", "titok", "dbname", 0, NULL, 0))) { fprintf(stderr, "Nem tudok csatlakozni a MySQL adatbázishoz (%s)", mysql_error(sql)); exit(1); } if (mysql_query(sql,"insert into table (a) values (1)")!=0) fprintf(stderr, "Hiba! %s", mysql_error(sql)); mysql_close(sql); } ===== MySQL adatbázis MinGW ===== #include #include #include int main(int argc, char **argv) { printf("Kezdes\n"); MYSQL *conn; //~ MYSQL_RES *res; //~ MYSQL_ROW row; printf("%s\n", mysql_get_client_info()); conn = mysql_init(NULL); if (!(mysql_real_connect(conn, "192.168.5.5", "test", "titok", "test", 0, NULL, 0))) { fprintf(stderr, "Nem tudok csatlakozni a MySQL adatbázishoz (%s)", mysql_error(conn)); exit(1); } if (mysql_query(conn,"insert into Szemelyek (dolgozo) values ('Füles Bagoly')")!=0) fprintf(stderr, "Hiba! %s", mysql_error(conn)); mysql_close(conn); return 0; } CC = c:/MinGW/bin/gcc RM = rm MYSQLINC = -Ic:/mysql/mysqlConnectorC/include MYSQLLIB = -Lc:/mysql/mysqlConnectorC/lib STDINC = -Ic:/MinGW/include STDLIB = -Lc:/MinGW/lib TARGET = program01.exe SRCS = program01.c OBJS = program01.o CFLAGS = LDFLAGS = -lmysql LIBS = $(STDLIB) $(MYSQLLIB) INCLUDES = $(STDINC) $(MYSQLINC) %.o : %.c $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $< $(TARGET): $(OBJS) $(CC) $(LDFLAGS) $(LIBS) -o $@ $^ clean: $(RM) -f $(TARGET) $(OBJS) A libmysql.dll-t útvonalba kell helyezni. Nálam ez itt van: c:\mysql\mysqlConnectorC\lib\ ===== MySQL CodeBlocksban ===== Settings -> Compiler -> Global compiler settings ikon Search directories fül Compiler alfül Add gomb Keressük ki: C:\mysql-connector-c-6.1.5-win32\include Global compiler settings ikon Search directories fül Linker alfül Add gomb Keressük ki: C:\mysql-connector-c-6.1.5-win32\lib Global compiler settings ikon Other linker options: Linker settings: -lmysql Global compiler settings ikon Linker libraries: Add gomb libmysql.dll kikeressük, hozzáadjuk Teszteljük: #include #include int main(){ printf("%s\n", mysql_get_client_info()); return 0; } A Path környezeti változóba vegyük fel a következőt: C:\mysql-connector-c-6.1.5-win32\lib Eredmény ehhez hasonló kell legyen: 6.1.5 ===== Függelék ===== ==== Egyszerű teszt ==== #include #include int main() { printf("%s\n", mysql_get_client_info()); printf("teszt\n"); return 0; } TARGET = program01.exe CC = "c:\Program Files (x86)\CodeBlocks\MinGW\bin\gcc" CFLAGS = -Wall -g LDFLAGS = -lmysql SRCS = program01.c OBJS = program01.o MYSQLINCLUDE = -Ic:/mysql-connector-c-6.1.5-win32/include/ MYSQLLIB = -Lc:/mysql-connector-c-6.1.5-win32/lib/ STDINCLUDE = -I"c:/Program Files (x86)/CodeBlocks/MinGW/include/" STDLIB = -L"c:/Program Files (x86)/CodeBlocks/MinGW/lib/" INCLUDES = ${STDINCLUDE} ${MYSQLINCLUDE} LIBS = ${STDLIB} ${MYSQLLIB} ${TARGET}: ${OBJS} ${CC} ${LDFLAGS} ${LIBS} -o ${TARGET} ${OBJS} ${OBJS}: ${SRCS} ${CC} ${CFLAGS} ${INCLUDES} -c ${SRCS} clean: rm ${OBJS} ${TARGET} ==== Linux alatt ==== apt-get install libmysqlclient-dev #include #include #include int main(int argc, char **argv) { MYSQL *sql; if (!(mysql_real_connect(sql, "localhost", "root", "titok", "dbname", 0, NULL, 0))) { fprintf(stderr, "Nem tudok csatlakozni a MySQL adatbázishoz (%s)", mysql_error(sql)); exit(1); } if (mysql_query(sql,"insert into table (a) values (1)")!=0) fprintf(stderr, "Hiba! %s", mysql_error(sql)); mysql_close(sql); return 0; } CC = gcc LDFLAGS = -lmysqlclient TARGET = program01 OBJECTS = program01.o SOURCES = program01.c HEADER = $(TARGET): $(OBJECTS) $(CC) $(LDFLAGS) -o $(TARGET) $(OBJECTS) $(OBJECTS): $(SOURCES) $(CC) -c -o $(OBJECTS) $(SOURCES) clean: rm -f $(TARGET) $(OBJECTS); #include #include #include int main(int argc, char **argv) { MYSQL *con = mysql_init(NULL); if (!(mysql_real_connect(con, "localhost", "zoldUser", "titok", "zoldZrt", 0, NULL, 0))) { fprintf(stderr, "Nem tudok csatlakozni a MySQL adatbázishoz (%s)", mysql_error(con)); exit(1); } if (!mysql_set_character_set(con, "utf8")) { printf("A kliens új karakterkódolása: %s\n", mysql_character_set_name(con)); } if (mysql_query(con,"select nev, fizetes from szemelyek")!=0) fprintf(stderr, "Hiba! %s", mysql_error(con)); MYSQL_RES *result = mysql_store_result(con); if (result == NULL) { fprintf(stderr, "%s\n", mysql_error(con)); mysql_close(con); exit(1); } int num_fields = mysql_num_fields(result); MYSQL_ROW row; while ((row = mysql_fetch_row(result))) { int i; for(i = 0; i < num_fields; i++) { printf("%s ", row[i] ? row[i] : "NULL"); } printf("\n"); } mysql_free_result(result); mysql_close(con); return 0; } ===== Linkek ===== * http://dev.mysql.com/doc/refman/5.5/en/c-api-functions.html (C API) * http://zetcode.com/db/mysqlc/