08. mysql & c

Upload: baobinhday

Post on 06-Jan-2016

16 views

Category:

Documents


0 download

DESCRIPTION

Huong dan Mysql va C++

TRANSCRIPT

  • Bi 8: MySQL & C

    1TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • Gii thiu

    MySQL cung cp mt th vin vit bng C lm vic vi DBMS

    Cc tnh nng: Kt ni vi my ch (s dng SSL secured socket

    layer) Gi cc cu truy vn, nhn v x l kt qu Kim tra v x l li

    2TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • Thit lp th vin Include (cn khi bin dch):

    #include #include

    Th vin (cn khi bin dch): #pragma comment(lib, "libmysql.lib") Hoc thm vo danh sch cc th vin dch (xem trang sau)

    Th vin ng (cn khi chy chng trnh): libmysql.dll

    Khi to th vin: int mysql_library_init(int argc,

    char** argv, char **groups) C th b qua, khng cn gi hm ny nu chng trnh ch c mt tin

    trnh chy (mono-thread) Kt thc s dng th vin: mysql_library_end()

    3TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • Thm th vin lin kt

    4TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • V d #include

    #include #include

    int main() {if (mysql_library_init(0, NULL, NULL)) {fprintf(stderr, "could not initialize MySQL library\n");exit(1);

    }

    /* ... */

    mysql_library_end();return 0;

    }5

    TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • Cc kiu d liu

    MYSQL: cha thng tin v kt ni ti DBMS MYSQL_RES: cha kt qu tr v ca cc cu truy

    vn c tr v kt qu l cc hng (cc cu lnh: select, show, explain)

    MYSQL_ROW: d liu ca mt hng trong kt qu MYSQL_FIELD: d liu ca mt trng trong mt

    hng ca kt qu

    6TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • Thit lp v ng kt ni

    To kt ni: MYSQL* conn = mysql_init(NULL);mysql_real_connect(conn, server_addr,

    username, password, database_name,0, NULL, 0);

    ng kt ni: mysql_close(conn);

    7TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • V d int main (int argc, char *argv[]) {

    MYSQL* conn = mysql_init (NULL);if (conn == NULL) return 1;

    if (mysql_real_connect (conn, opt_host_name, opt_user_name, opt_password,opt_db_name, opt_port_num,opt_socket_name, opt_flags) == NULL) {fprintf (stderr, "failed\n");mysql_close (conn);

    }mysql_close (conn);return 0;

    }8

    TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • Kim tra li MySQL cung cp cc hm sau ly thng tin v li

    khi xy ra: unsigned int mysql_errno(MYSQL* conn)

    Tr v m li const char *mysql_error(MYSQL* conn)

    Tr v thng ip li

    Thng tin thm v m v cc thng ip li (bn5.0): http://dev.mysql.com/doc/refman/5.0/en/error-handling.html

    9TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • Thc hin cu truy vn gi v thc hin cu truy vn, dng hm:

    int mysql_query(MYSQL* conn,const char* stmt)

    int mysql_real_query(MYSQL* conn,const char* stmt, unsigned long len)

    Cc tham s: stmt: chui cha cu truy vnlen: di ca chui cha cu truy vn

    Tr v 0 nu thnh cng, khc 0 nu c li

    10TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • Ly kt qu tr v Sau khi thc hin cu truy vn, gi hm:

    MYSQL_RES* mysql_store_result(MYSQL* conn)

    Tip theo gi hm sau ly tng hng kt qu: MYSQL_ROW mysql_fetch_row(MYSQL_RES* result) Tr v NULL nu kt thc kt qu

    Cui cng, kt thc v gii phng b nh m cha ktqu: void mysql_free_result(MYSQL_RES* result)

    Di chuyn con tr c kt qu: MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES* result,

    MYSQL_ROW_OFFSET offset) MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES* result)

    11TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • Cc thng tin v kt qu tr v S thuc tnh (trng) ca kt qu:

    unsigned int mysql_num_fields(MYSQL_RES* result)

    S hng: my_ulonglong mysql_num_rows(MYSQL_RES* result)

    ID ca d liu mi c thm (cu lnh INSERT): my_ulonglong mysql_insert_id(MYSQL *mysql) ID phi c nh ngha vi thuc tnh AUTO_INCREMENT

    S hng b thay i (cu lnh INSERT, UPDATE,) my_ulonglong mysql_affected_rows(MYSQL *mysql)

    12TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • V d - select if (mysql_query(conn, "select * from USER") != 0)

    handle_error(conn);else {

    MYSQL_RES* result = mysql_store_result(conn);

    printf("Number of rows: %d\n", mysql_num_rows(result));

    MYSQL_ROW row;while (row = mysql_fetch_row(result)) {

    printf("%s, %s, %s, %s\n",row[0], row[1], row[2], row[3]);

    }

    mysql_free_result(result);}

    13TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • V d - insert if (mysql_query(conn, "insert into

    User(username, password, level)values('superhero', 'chipchip', 3)") != 0)handle_error(conn);

    else {printf("%d rows added\n",

    mysql_affected_rows(conn));

    printf("ID of inserted user: %d\n",mysql_insert_id(conn));

    }

    14TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • V d - update if (mysql_query(conn, "update User

    set level = 5where id in (2, 3, 4)") != 0)handle_error(conn);

    else {printf("%d rows updated\n",

    mysql_affected_rows(conn));}

    15TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

  • Bi tp

    1. nh ngha mt quan h SinhVien, sau vit mt chng trnh C nhp thng tin sinh vin, thm vo CSDL v in ra ID ca sinh vin va c thm

    2. Vit chng trnh C nhp ID ca mt sinh vin v in ra thng tin ca sinh vin

    3. Vit chng trnh C nhp tn ca sinh vin v in ra thng tin nhng ngi c tn nh nhp

    16TS. o Trung Kin H Bch khoa H NiEE4509, EE4253, EE6133 HK1 2014/2015

    Bi 8: MySQL & CGii thiuThit lp th vinThm th vin lin ktV dCc kiu d liuThit lp v ng kt niV dKim tra liThc hin cu truy vnLy kt qu tr vCc thng tin v kt qu tr vV d - selectV d - insertV d - updateBi tp