Easy SQLite - Dr Editor - 28/06/2023
Easy SQLite
Sobre:
Como o próprio nome sugere, é uma include que facilita a manipulação de informações do banco de dados SQLite.
Inicialmente queria unificar SQLite e MySQL, porém fiquei com preguiça e deixei apenas com SQLite.
Esta include não é uma novidade, porém para novatos que estão começando é uma boa alternativa para fugir de salvamento em texto.
Qual a diferença desta para as demais?
Outras includes, em sua grande maioria, executam cada instrução imediatamente fazendo diversas operações enquanto esta armazena em cache e executa tudo de uma única vez.
As nomenclaturas desta include também são um fator facilitador para quem está começando, pois aos olhos de quem conhece pouco a linguagem acha que esta é apenas uma extensão da include nativa de SQLite.
Menos é mais!
Se comparada com outras includes, contém menos recursos, porém você terá o necessário para qualquer servidor:
- Criar tabelas
- Adicionar linhas
- Atualizar linhas
- Remover linhas
- Cláusula WHERE
Exemplos:
Exemplo com DOF2:
Código: #include <a_samp>
#include <DOF2>
main()
{
if(DOF2_FileExists("usuario.txt"))
{
new idade = DOF2::GetInt("usuario.txt", "idade");
DOF2::SetInt("usuario.txt", "idade", ++idade);
DOF2_SaveFile();
if(idade > 30)
{
DOF2::RemoveFile("usuario.txt");
}
}
else
{
DOF2::CreateFile("usuario.txt");
DOF2::SetString("usuario.txt", "nome", "Eduardo AC");
DOF2::SetInt("usuario.txt", "idade", 26);
DOF2::SetString("usuario.txt", "sexo", "Masculino");
DOF2_SaveFile();
}
}
Exemplo com Easy SQLite:
Código: #include <a_samp>
#define MAX_DB_HANDLE 200
#include <e_db>
static DB:__dbHandle;
main()
{
__dbHandle = db_open("teste.db");
new handle = db_query_handle(__dbHandle);
db_create_table(handle, "usuarios");
db_add_column(handle, "id", "INTEGER PRIMARY KEY AUTOINCREMENT");
db_add_column(handle, "nome", "TEXT");
db_add_column(handle, "idade", "INTEGER");
db_add_column(handle, "sexo", "TEXT");
db_execute_create_table(handle);
handle = db_query_handle(__dbHandle);
db_set_table(handle, "usuarios");
db_add_select(handle, "idade");
db_set_where_clause_ex(handle, "nome='%s'", "Eduardo AC");
new DBResult:result = db_execute_select(handle, true);
if(db_num_rows(result) > 0)
{
new idade = db_get_field_assoc_int(result, "idade");
handle = db_query_handle(__dbHandle);
db_set_table(handle, "usuarios");
db_update_int(handle, "idade", ++idade);
db_set_where_clause_ex(handle, "nome = '%s'", "Eduardo AC");
db_execute_update(handle);
if(idade > 30)
{
handle = db_query_handle(__dbHandle);
db_set_table(handle, "usuarios");
db_set_where_clause(handle, "idade > 30");
db_execute_delete(handle);
}
}
else
{
handle = db_query_handle(__dbHandle);
db_set_table(handle, "usuarios");
db_insert_string(handle, "nome", "Eduardo AC");
db_insert_int(handle, "idade", 26);
db_insert_string(handle, "sexo", "Masculino");
db_execute_insert(handle);
}
db_free_result(result);
}
public OnDbExecuteQuery(DB:handle, sql[], bool:error, elapsed)
{
printf("Debug [%b - %ims]: %s", error, elapsed, sql);
return 1;
}
Informações adicionais:- Não há ordem para o uso das funções, desde que a função de execução seja chamada por último vide exemplo acima
- Caso a execução não retorne nenhuma informação é porque faltou alguma função para finalizar a instrução
Prós:- Funções básicas
- Nomenclaturas facilitadas
- Uso prático
- Ótimo para iniciantes
- Eficiente
- Facilmente identifique erros de instrução
- Debug individual de consultas
Contras:- Maior tamanho do arquivo .amx
- Quanto maior for o número de instâncias, mais demorada será a compilação
- Caso se utilize um número de instâncias baixo, pode ocorrer risco de congelamento caso force a criação da instância
Download:
Pastebin
RE: Easy SQLite - xbruno1000x - 28/06/2023
Mais uma boa contribuição sua e com boas instruções de implementação! +rep
|