08. mysql & c
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