Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:c:mysql_adatbazis_kezelese

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

oktatas:programozas:c:mysql_adatbazis_kezelese [2017/10/02 20:29]
oktatas:programozas:c:mysql_adatbazis_kezelese [2019/08/21 17:58] (aktuális)
admin létrehozva
Sor 1: Sor 1:
 +[[:​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 =====
 +
 +<code c mysqleleres.c>​
 +#include <​mysql.h>​
 +  ​
 +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);​
 +}
 +</​code>​
 +
 +===== MySQL adatbázis MinGW =====
 +
 +<code c program01.c>​
 +#include <​stdio.h>​
 +#include <​stdlib.h>​
 +#include <​mysql.h>​
 +
 +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;
 +}
 +
 +</​code>​
 +
 +
 +<code make Makefile>​
 +
 +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)
 +
 +</​code>​
 +
 +
 +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:​
 +<code c main.c>
 +#include <​stdio.h>​
 +#include <​mysql.h>​
 + 
 +int main(){
 +    printf("​%s\n",​ mysql_get_client_info());​
 +    return 0;
 +}
 +</​code>​
 +
 +
 +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 ====
 +
 +
 +<code c program01.c>​
 +#include <​stdio.h>​
 +#include <​mysql.h>​
 +int main() {
 + printf("​%s\n",​ mysql_get_client_info());​
 + printf("​teszt\n"​);​
 + return 0;
 +}
 +</​code>​
 +
 +<code make Makefile>​
 +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}
 +
 +</​code>​
 +==== Linux alatt ====
 +
 +  apt-get install libmysqlclient-dev
 +
 +<code c program01.c>​
 +#include <​stdio.h>​
 +#include <​stdlib.h>​
 +#include <​mysql/​mysql.h>​
 +
 +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;
 +}
 +</​code>​
 +
 +
 +<code make Makefile>​
 +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);
 +</​code>​
 +
 +
 +<code c program01.c>​
 +#include <​stdio.h>​
 +#include <​stdlib.h>​
 +#include <​mysql/​mysql.h>​
 +
 +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;
 +}
 +</​code>​
 +
 +===== Linkek =====
 +  * http://​dev.mysql.com/​doc/​refman/​5.5/​en/​c-api-functions.html (C API)
 +  * http://​zetcode.com/​db/​mysqlc/​