Plugin MySQL para SA:MP e open.mp escrito em Rust. Zero dependências externas, queries non-blocking, cache e ORM integrados.
| Novo por aqui | Instalação → Conexão → Queries |
| Migrando do R41-4 | Guia de migração → O que mudou → Exemplos |
| Referência rápida | API completa |
| Desempenho | Benchmark |
Conexão, query assíncrona e leitura do resultado no callback:
#include <mysql_samp>
new MySQL:g_mysql;
public OnGameModeInit()
{
g_mysql = mysql_connect("127.0.0.1", "root", "senha", "banco");
// Query FIFO (non-blocking) — executa em thread separada
mysql_query(g_mysql, "SELECT id, nome FROM jogadores LIMIT 5", "OnJogadoresCarregados", "");
return 1;
}
forward OnJogadoresCarregados(errorid, error[]);
public OnJogadoresCarregados(errorid, error[])
{
if (errorid != 0) {
printf("[MySQL] Erro %d: %s", errorid, error);
return;
}
while (cache_next_row()) {
new id, nome[MAX_PLAYER_NAME];
cache_get_value_name_int("id", id);
cache_get_value_name("nome", nome);
printf("Jogador #%d: %s", id, nome);
}
}
public OnGameModeExit()
{
mysql_close(g_mysql);
return 1;
}
| Tópico | Descrição |
|---|---|
| Queries | mysql_query, mysql_pquery, mysql_format, escape de strings |
| Cache | Leitura de resultados, navegação entre linhas, cache salvo |
| ORM | Mapeamento de variáveis Pawn para colunas, CRUD automático |
| Options | Configuração de porta, charset, timeout e outros |
| Segurança | Proteção contra SQL injection, limites e boas práticas |
| Erros | mysql_errno, OnQueryError, códigos de erro do MySQL |