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)
Descrição
mysql_real_connect() tenta estabelecer uma conexão mecanismo MariaDB de banco de dados executando em host. mysql_real_connect() deve completar com suceeso antes que você possa executar qualquer um das outars funçãoes da API, com a excessão de mysql_get_client_info().
Os parâmetros são especificados da seguinte forma:
- O primeiro parâmetro deve ser o endereço de uma estrutura
MariaDBexistente. Antes de chamarmysql_real_connect()você deve chamarmysql_init()para inicializar a estruturaMariaDB. Você pode alterar vária opções de conexão com a chamadamysql_options(). Leia "mysql_options()". - O valor de
hostpode ser tanto um nome de máquivo quanto um endereço IP. SehostéNULLou a string'localhost', a conexão é feita na máquina local. Se o SO suporta sockets (Unix) ou named pipes (Windows), eles são utilizados em vez de TCP/IP para a conexão ao servidor. - O parâmetro
usercontém a indetificação do usuário MariaDB. SeuseréNULLou a string vazia'', considera-se o usuário padrão. Sob Unix, ele é o login atual. Sob ODBC no Windows, o usuário atual deve ser especificado explicitamente. Leia "Como Preencher os Vários Campos no Programa de Administração do ODBC". - O parâmetro
passwdcontém a senha parauser. SepasswdéNULL, somente entradas na tabelauserpara usuários que tenham campo de senha em branco (vazia) serão verificados ipor um padrão coincidenete. Isto permite que o admistrador do banco de dados configure o sistema de privilégios do MariaDB de tal maneira que usuários os usuários conseguirão privileios diferentes, dependendo se ele espcificou ou não uma senha.Nota: Não tente criptografar a senha antes de chamar
mysql_real_connect(); senhas criptografadas são tratadas automaticamente pela API cliente. dbé o nome de banco de dados. Sedbnão éNULL, a conexão definirá o banco de dados padrão com este valor.- Se
portnão é 0, o valor será usado como o número da porta para as conexões TCP/IP. Note que o parâmetrohostdetermina o tipo da conexão. - Se
unix_socketnão éNULL, a string especifica o socket ou named pipe que deve ser usado. Note que o parâmetrohostdetermina o tipo de conexão. - O valor de
client_flagé normalmente 0, mas pode ser definido como uma combinação dos parâmetro seguintes em circunstâncias especiais:Nome do parâmetro Descrição do parâmetro CLIENT_COMPRESSUsa protocolo compactado. CLIENT_FOUND_ROWSRetorna o número de linhas encontradas (correspondentes a um padrão), não o número de linha efetivo. CLIENT_IGNORE_SPACEPermite espaço depois do nome de funções. torna todos os nomes de funções palavras reservadas. CLIENT_INTERACTIVEPermite interactive_timeoutsegundos (no lugar dewait_timeoutsegundos) de inatividade antes de fechar a conexão.CLIENT_LOCAL_FILESHabilita LOAD DATA LOCAL.CLIENT_MULTI_STATEMENTSDiz ao servidor que o cliente pode enviar consultas multi linhas (separado com ' ;'). Se este parâmetro não está definido, consultas de multil linhas está disabilitado. (Novo na versão 4.1).CLIENT_MULTI_RESULTSDiz ao servidor que o cliente pode tratar multíplos conjuntos de resultados de um multi consulta ou stored procedures. Isto é definido automaticamente se CLIENT_MULTI_STATEMENTSestá lidado. Novo na versão 4.1.CLIENT_NO_SCHEMANão permite a sintaxe db_name.nome_tabela.nome_coluna. Isto é para o ODBC. Ele faz com que o analizador gere um erro se você utilizar aquela sintaxe. É útil para achar erros em alguns programas ODBC.CLIENT_ODBCO cliente é um cliente ODBC. Torna o mysqldmais amigável ao ODBC.CLIENT_SSLUsa SSL (protocolo criptografado). Esta opção não deve ser configuração pelo aplicativo; ele é definida internamente na biblioteca cliente.
Valor Retornado
Um handle de conexão MYSQL* se a conexão foi obtida corretamente, NULL se a conexão falhou. Para um conexão estabelecida o valor de retorn é o mesmo que o valor do primeiro parâmetro.
Erros
CR_CONN_HOST_ERRORFalhou ao conectar ao servidor MySQL.
CR_CONNECTION_ERRORFalhou ao conectar ao servidor MariaDB local.
CR_IPSOCK_ERRORFalhou au criar um socket IP.
CR_OUT_OF_MEMORYSem memória.
CR_SOCKET_CREATE_ERRORFalhou ao criar um socket Unix.
CR_UNKNOWN_HOSTFalhou ao procurar o endereço IP para o nome de maquina.
CR_VERSION_ERRORUm erro de protocolo resultou da tentativa de conexao a um servidor com uma biblioteca cliente que utiliza uma versão de protocolo diferente. Isto pode acontecer se você utiliza uma biblioteca cliente muito antiga para se conectar a um novo servidor qua não foi iniciado com a opção
--old-protocol.CR_NAMEDPIPEOPEN_ERRORFalhou ao criar um named pipe no Windows.
CR_NAMEDPIPEWAIT_ERRORFalhou ao esperar por um named pipe no Windows.
CR_NAMEDPIPESETSTATE_ERRORFalhou ao conseguir mainpulador do pipe no Windows.
CR_SERVER_LOSTSe
connect_timeout> 0 e leva mais queconnect_timeoutsegundos para conectar ao servidor ou se o servidro foi finalizado ao executar oinit-command.
Exemplo
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,'seu_programa');
if (!mysql_real_connect(&mysql,'host','user','passwd','database',0,NULL,0))
{
fprintf(stderr, 'Failed to connect to database: Error: %s\n',
mysql_error(&mysql));
}
Usando mysql_options() a biblioteca MariaDB irá ler as seções [client] e [seu_programa] no arquivo my.cnf o qual irá assegurar que seu programa irá funcionar, mesmo se alguem tiver configurado o MariaDB de um modo fora do padrão.
Note que sob a conexão, mysql_real_connect() define o parâmetro reconnect (parte da estrutura MariaDB) para um valor de 1. Este parâmetro indica, no evento em que uma consulta não pode ser realizada devido a perda de conexão, para tentar se reconectar ao servidor antes de esgotar as tentativas.