void mysql_close(MYSQL * connection);
ΠΡΠ° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π·ΠΎΡΠ²Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. ΠΡΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΎΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ mysql_init, ΠΏΠ°ΠΌΡΡΡ, ΠΎΡΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΠΏΠΎΠ΄ ΡΡΡΡΠΊΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°, ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡΡ. Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΠ°Π½Π΅Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ, ΠΈ Π΅Π³ΠΎ Π½Π΅Π»ΡΠ·Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ. ΠΡΠΊΡΡΡΠΎΠ΅ Π½Π΅Π½ΡΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ°ΡΡΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ², Π½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΎΡΠΊΡΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΏΡΡΠΆΠ΅Π½ΠΎ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠΌΠΈ ΡΠ°ΡΡ ΠΎΠ΄Π°ΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° mysql_options (ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ mysql_init ΠΈ mysql_real_connect) ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΡΡΡΠΎΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
int mysql_options(MYSQL* connection, enum option_to_set, const char *argument);
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ mysql_options ΡΠΏΠΎΡΠΎΠ±Π½Π° Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·, Π½ΠΎ Π²ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ mysql_init ΠΈ mysql_real_connect. ΠΠ΅ Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ char, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊΠ°ΠΊ const char*. Π’ΡΠΈ ΡΠ°ΠΌΡΡ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΠ°Π±Π». 8.11. Π ΠΊΠ°ΠΊ Π²ΡΠ΅Π³Π΄Π° Π² ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
Π’Π°Π±Π»ΠΈΡΠ° 8.11
Enum-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ MYSQL_ΠΠ Π’_CONNECT_TIMEOUT const unsigned int* ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·-Π·Π° ΠΏΡΠΎΡΡΠΎΡ MYSQL_ΠΠ Π’_COMPRESS ΠΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ NULL ΠΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠΆΠ°ΡΠΈΠ΅ ΠΏΡΠΈ ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ MYSQL_INIT_COMMAND const char* ΠΠΎΠΌΠ°Π½Π΄Π°, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠ£ΡΠΏΠ΅ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ»Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ»Π°Π³ΠΎΠ², Π°Π²Π°ΡΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
ΠΠ»Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, ΡΠ°Π²Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΌΠΈ ΡΠ΅ΠΊΡΠ½Π΄Π°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
unsigned int timeout = 7;
...
connection = mysql_init(NULL);
ret = mysql_options(connection, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&timeout);
if (ret) {
/* ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ */
...
}
connection = mysql_real_connect(connection ...)
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ, ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡ Π²Π°ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°Π½ΠΈΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ Π·Π°Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π΄Π°Π»Π΅Π΅ ΠΊΠΎΠ΄Π΅ rick Π½Π° localhost) ΠΈ Π·Π°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ foo, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ. ΠΡ Π²ΡΠ΅ ΡΡΠΎ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
$ mysql -u root -Ρ
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> GRANT ALL ON *.* TO [email protected] IDENTIFIED BY 'secret';
Query OK, 0 rows affected (0.01 sec)
mysql> \q
Bye
$ mysql -u rick -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> CREATE DATABASE foo;
Query OK, 1 row affected (0.01 sec)
mysql> \q
ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π½ΠΎΠ²ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΌΠ΅ΡΡΠΎ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠ΅ΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ° mysql, ΡΡΠΎ ΡΠΎΠΏΡΡΠΆΠ΅Π½ΠΎ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΈ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΡΠ°ΠΉΠ» ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π½ΡΠΆΠ½ΡΠΌΠΈ Π²Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠ°ΠΉΠ» create_children.sql:
--
-- Create the table children
--
CREATE TABLE children (
childno int(11) NOT NULL auto_increment,
fname varchar(30),
age int(11),
PRIMARY KEY (childno)
);
--
--Populate the table 'children'
--
INSERT INTO children(childno, fname, age) VALUES (1,'Jenny',21);
INSERT INTO children(childno, fname, age) VALUES (2,'Andrew',17);
INSERT INTO children(childno, fname, age) VALUES (3,'Gavin',8);
INSERT INTO children(childno, fname, age) VALUES (4,'Duncan', 6);
INSERT INTO children(childno, fname, age) VALUES (5,'Emma',4);
INSERT INTO children(childno, fname, age) VALUES (6,'Alex',15);
INSERT INTO children(childno, fname, age) VALUES (7,'Adrian',9);
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ½ΠΎΠ²Π° Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² MySQL, Π²ΡΠ±ΡΠ°Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ foo, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ». ΠΠ»Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ:
$ mysql -u rick --password=secret foo
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> \. create_children.sql
Query OK, 0 rows affected (0.01 sec)
Query OK, 1 row affected (0.00 sec)
ΠΡ ΡΠ±ΡΠ°Π»ΠΈ ΠΈΠ· Π²ΡΠ²ΠΎΠ΄Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΡ ΡΡ ΡΡΡΠΎΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠΎΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . Π’Π΅ΠΏΠ΅ΡΡ, ΠΈΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ°Π±Π»ΠΈΡΡ Ρ Ρ ΡΠ°Π½ΡΡΠΈΠΌΠΈΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠ°ΠΉΠ» connect1.Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ rick Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ secret ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ foo.
#include <stdlib.h>
#include <stdio.h>
#include "mysql.h"
int main(int argc, char *argv[]) {
MYSQL *conn_ptr;
conn_ptr = mysqlinit(NULL);
if (!conn_ptr) {
fprintf(stderr, "mysql_init failed\n");
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "rick", "secret",
"foo", 0, NULL, 0);
if (conn_ptr) {
printf("Connection success\n");
} else {
printf ("Connection failed\n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ include ΠΈ ΠΏΡΡΡ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠ°ΠΉΠ» Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ mysqlclient. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΎΠΏΡΠΈΡ -lz Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ (compression library). Π ΡΠΈΡΡΠ΅ΠΌΠ΅ Π°Π²ΡΠΎΡΠΎΠ² ΡΡΠ΅Π±ΡΠ΅ΠΌΠ°Ρ ΡΡΡΠΎΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
$ gcc -I/usr/include/mysql connect1.Ρ -L/usr/lib/mysql -lmysqlclient -ΠΎ connect1
ΠΠ°ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π»ΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈ ΠΌΠ΅ΡΡΠΎ ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π·Π°Π²ΠΈΡΡΡΠ΅Π΅ ΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°, ΠΈ ΠΎΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ:
$ ./connect1
Connection success $
Π Π³Π»Π°Π²Π΅ 9 ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ make-ΡΠ°ΠΉΠ» ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ MySQL ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ.
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ MySQL ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ. Π‘Π£Π ΠΠ MySQL ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΊΠΎΠ΄ΠΎΠ², ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. Π Π΄Π²ΡΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
unsigned int mysql_errno(MYSQL *connection);
ΠΈ
char *mysql_error(MYSQL *connection);
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΎΠ±ΡΡΠ½ΠΎ Π»ΡΠ±ΠΎΠ΅ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ·Π²Π°Π² ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ mysql_errno ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π΅ΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π½ΠΎΠ»Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠ΄ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΊΠΎΠ΄ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΠ΄Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΡΠ°ΠΉΠ»Π΅ include Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ errmsg.h ΠΈΠ»ΠΈ Π² ΡΠ°ΠΉΠ»Π΅ mysqld_error.h. ΠΠ±Π° ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ MySQL Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ include. ΠΠ΅ΡΠ²ΡΠΉ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π° Π²ΡΠΎΡΠΎΠΉ β ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ mysql_error, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Π’Π΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΈΡΠ΅ΡΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΡΠ΄Π°- Π½ΠΈΠ±ΡΠ΄Ρ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²ΡΠ΅ ΡΡΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° mysql_real_connect Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ±ΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ NULL, Π»ΠΈΡΠ°Ρ Π²Π°Ρ ΠΊΠΎΠ΄Π° ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡΠ»ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π΅Π³ΠΎ Π²ΡΠ΅ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΈ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ mysql_real_connect.
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠ°ΠΉΠ» connect2.c, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π· Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π½Π΅Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ½Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΠ΄Π΅Π»Π΅Π½Ρ ΡΠ²Π΅ΡΠΎΠΌ.