21.2.3 Description des fonctions de l'API C
21.2 API MySQL C
21 API MySQL
Manuel de Référence MySQL 4.1 : Version Française
. mysql_affected_rows() . mysql_change_user() . mysql_character_set_name() . mysql_close() . mysql_connect() . mysql_create_db() . mysql_data_seek() . mysql_debug() . mysql_drop_db() . mysql_dump_debug_info() . mysql_eof() . mysql_errno() . mysql_error() . mysql_escape_string() . mysql_fetch_field() . mysql_fetch_fields() . mysql_fetch_field_direct() . mysql_fetch_lengths() . mysql_fetch_row() . mysql_field_count() . mysql_field_seek() . mysql_field_tell() . mysql_free_result() . mysql_get_client_info() . mysql_get_client_version() . mysql_get_host_info() . mysql_get_proto_info() . mysql_get_server_info() . mysql_get_server_version() . mysql_info() . mysql_init() . mysql_insert_id() . mysql_kill() . mysql_list_dbs() . mysql_list_fields() . mysql_list_processes() . mysql_list_tables() . mysql_num_fields() . mysql_num_rows() . mysql_options() . mysql_ping() . mysql_query() ->mysql_real_connect() . mysql_real_escape_string() . mysql_real_query() . mysql_reload() . mysql_row_seek() . mysql_row_tell() . mysql_select_db() . mysql_set_server_option() . mysql_shutdown() . mysql_sqlstate() . mysql_ssl_set() . mysql_stat() . mysql_store_result() . mysql_thread_id() . mysql_use_result() . mysql_warning_count() . mysql_commit() . mysql_rollback() . mysql_autocommit() . mysql_more_results() . mysql_next_result()
|
21.2.3.43 mysql_real_connect()
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,
const char *user, const char *passwd, const char *db,
unsigned int port, const char *unix_socket,
unsigned long client_flag)
Description
mysql_real_connect()
essaye de se connecter à une base de données MySQL
tournant sur l'hôte.
mysql_real_connect()
doit se terminer correctement avant que vous ne puissiez
aucune autre fonction de l'API, à l'exception de
mysql_get_client_info()
.
Les paramètres sont spécifiés comme suit :
-
Le premier paramètre doit être l'adresse d'une structure
MYSQL
existante. Avant d'appeler
mysql_real_connect()
vous devez appeler
mysql_init()
pour initialiser la structure
MYSQL
. Vous pouvez
changer un tas d'options de connexion en appelant
mysql_options()
.
mysql_options()
.
-
La valeur de
host
peut être un nom de domaine ou une adresse IP. Si
host
est
NULL
ou égal à la chaîne
"localhost"
, une connexion
à la machine local est essayée. Si le système supporte les sockets (Unix) ou les
tunnels nommés (Windows), elles sont utilisées au lieu de TCP/IP pour se connecter
au serveur.
-
La paramètre
user
contient l'identifiant MySQL de l'utilisateur. Si
user
est
NULL
, l'utilisateur courant est sous-entendu. Avec Unix c'est l'utilisateur
courant. Avec Windows ODBC, le nom de l'utilisateur courant doit être spécifié
explicitement.
Comment remplir les différents champs dans le programme d'administrateur ODBC .
-
La paramètre
passwd
contient le mot de passe de
user
. Si
passwd
est
NULL
, seules les entrées de la table
user
pour l'utilisateur ayant
un champ vide seront testées. Cela permet à l'administrateur de mettre en place le système
de privilèges MySQL de façon à ce que les utilisateurs aient divers privilèges selon qu'ils
aient spécifié ou pas de mot de passe.Note : N'essayez pas d'encrypter le mot de passe avant l'appel à
mysql_real_connect()
;
l'encryptage du mot de passe est gérée automatiquement par l'API du client.
-
db
est le nom de la base de données.
Si
db
n'est pas
NULL
, la connexion changera la base par défaut
en cette valeur.
-
Si
port
est différent de 0, sa valeur sera utilisé comme port de connexion
TCP/IP. Notez que le paramètre
host
détermine le type de la connexion.
-
Si
unix_socket
n'est pas
NULL
, la chaîne spécifie la socket ou le tunnel
nommé à utiliser. Notez que le paramètre
host
détermine le type de la connexion.
-
La valeur de
client_flag
est habituellement 0, mais peut être la combinaison
des options suivantes dans des circonstances très spéciales :
Nom de l'option
|
Description
|
CLIENT_COMPRESS
|
Utilise le protocole compressé.
|
CLIENT_FOUND_ROWS
|
Retourne le nombre de lignes trouvées, et non de lignes affectées.
|
CLIENT_IGNORE_SPACE
|
Autorise les espaces après les noms de fonctions. Rend tous les noms de fonctions des mots réservés.
|
CLIENT_INTERACTIVE
|
Autorise
interactive_timeout
secondes (au lieu de
wait_timeout
secondes) d'innactivité avant de fermer la connexion.
|
CLIENT_LOCAL_FILES
|
Active le support de
LOAD DATA LOCAL
.
|
CLIENT_MULTI_STATEMENTS
|
Indique au serveur que le client peut envoyer des requêtes multiples (séparées par des
';'
). Si cette option n'est pas configurée, les commandes multiples sont désactivées. Nouveau en 4.1.
|
CLIENT_MULTI_RESULTS
|
Indique au serveru que le client peut gérer des jeux de résultats multiples, issus de commandes multiples, ou de procédures stockées. C'est automatique si l'option
CLIENT_MULTI_STATEMENTS
est active. Nouveau en 4.1.
|
CLIENT_NO_SCHEMA
|
N'autorise pas la syntaxe
db_name.tbl_name.col_name
. Cela est fait pour ODBC. Il fait génèrer une erreur à l'analyseur si vous utilisez cette syntaxe, ce qui peut se réveler fort utile pour la chasse aux bogues dans les programmes ODBC.
|
CLIENT_ODBC
|
Le client est un client ODBC. Cela rend
mysqld
plus accueillant vis à vis de ODBC.
|
CLIENT_SSL
|
Utilise SSL (protocole encrypté).
|
Valeur de retour
Un gestionnaire de connexion
MYSQL*
si la connexion a réussi,
NULL
si elle a échoué. Pour une connexion à succès, la valeur
de retour est la même que la valeur du premier paramètre.
Erreurs
-
CR_CONN_HOST_ERROR
-
Impossible de se connecter au serveur MySQL.
-
CR_CONNECTION_ERROR
-
Impossible de se connecter au serveur MySQL local.
-
CR_IPSOCK_ERROR
-
Impossible de créer une socket IP.
-
CR_OUT_OF_MEMORY
-
Plus de mémoire.
-
CR_SOCKET_CREATE_ERROR
-
Impossible de créer une socket UNIX.
-
CR_UNKNOWN_HOST
-
Impossible de trouver l'adresse IP de l'hôte.
-
CR_VERSION_ERROR
-
Une disparité de protocole a résulté de la tentative de connexion à un serveur avec
une bibliothèque de client qui utilise une version différente du protocole. Cela peut
arriver si vous utilisez une très vieille bibliothèque cliente pour vous connecter à un
serveur qui n'a pas été démarré avec l'option
--old-protocol
.
-
CR_NAMEDPIPEOPEN_ERROR
-
Impossible de créer un tunnel nommé sur Windows.
-
CR_NAMEDPIPEWAIT_ERROR
-
Impossible d'attendre un tunnel nommé sur Windows.
-
CR_NAMEDPIPESETSTATE_ERROR
-
Impossible d'obtenir un gestionnaire de tunnel sur Windows.
-
CR_SERVER_LOST
-
Si
connect_timeout
> 0 et qu'il a fallu plus de
connect_timeout
secondes pour se connecter au serveur, ou que celui-ci n'a plus répondu durant
l'exécution de
init-command
.
Exemple
MYSQL mysql; mysql_init(&mysql); mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name"); if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0)) { fprintf(stderr, "Impossible de se connecter à la base de données, erreur : %s\n", mysql_error(&mysql)); }
|
En utilisant
mysql_options()
la bibliothèque MySQL lira les sections
[client]
et
[your_prog_name]
dans le fichier
my.cnf
ce qui assurera le bon fonctionnement de votre programme, même si quelqu'un
a configuré MySQL d'une façon non-standard.
Notez que pendant la connexion,
mysql_real_connect()
configure l'option
reconnect
(partie de la structure
MYSQL
) à
1
. Cette option
indique, dans le cas où une requête ne peut être exécutée à cause d'une déconnexion,
d'essayer de se reconnecter au serveur avant d'abandonner.
|