SA-MP Forums Archive
[Ajuda] Problema com SQLITE - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Problema com SQLITE (/showthread.php?tid=660173)



Problema com SQLITE - [BOPE]Seu._.Madruga - 26.10.2018

Boa tarde a todos, seguinte estou com um problema a tabela estб sendo criada normal desta forma abaixo:
PHP Code:
new DB:database
public 
OnGameModeInit()
{
    
/* Carrega o banco de dados */ 
    
database db_open("bancodedados.db");
    
db_free_result(db_query(database"CREATE TABLE IF NOT EXISTS contas (id    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,nome  TEXT NOT NULL,email  TEXT NOT NULL,senha TEXT NOT NULL,admin INTEGER NOT NULL,skin  INTEGER NOT NULL,px    INTEGER NOT NULL,py    INTEGER NOT NULL,pz    INTEGER NOT NULL,pa    INTEGER NOT NULL);"));
    return 
1;



Porйm na hora de se registrar nгo estб setando no banco de dados
PHP Code:
        case DIALOG_REGISTRO: {
            if(
response) {
                new 
string[500];
                if(!
strlen(inputtext)) {
                    
format(stringsizeof(string), "{FFFFFF}Seja bem-vindo(a) ao: {ffbc59}Guerra dos Mitos - MultiModo © | BILНNGUE | Venha!\n\n{FFFFFF}Status: {FF0000}Conta nгo registrada\n\n{FFFFFF}Nick: {FF0000}%s\n\n{ffbc59}* {FFFFFF}Insira uma senha para registrar sua conta! {ffbc59}*"GetPlayerNome(playerid));
                    
ShowPlayerDialog(playeridDIALOG_REGISTRODIALOG_STYLE_PASSWORD"{ffbc59}Guerra dos Mitos - {FFFFFF}MultiModo"string"Registrar""Sair");                    
                } else {                    
                    new 
query[300]; 
                    
format(querysizeof(query), "INSERT INTO contas (nome, senha, admin, skin, px, py, pz, pa) VALUES ('%s', '%s', '0', '0', '0.0', '0.0', '0.0', '0.0');"DB_Escape(GetPlayerNome(playerid)), DB_Escape(inputtext)); 
                    
db_free_result(db_query(databasequery));     
                    
pInfo[playerid][Admin] = 0;
                    
pInfo[playerid][pRegistroNaoConcluido] = true
                    
format(pInfo[playerid][Senha], 20"%s"inputtext);
                    
format(stringsizeof(string), "{FFFFFF}Seja bem-vindo(a) ao: {ffbc59}Guerra dos Mitos - MultiModo © | BILНNGUE | Venha!\n\n{FFFFFF}Selecione '{4169E1}Masculino{FFFFFF}' ou '{DB7093}Feminino{ffffff}'\n\n{ffbc59}* {FFFFFF}Escolha uma das opзхes abaixo para definir sua sexualidade {ffbc59}*");
                    
ShowPlayerDialog(playeridDIALOG_SEXUALIDADEDIALOG_STYLE_MSGBOX"{ffbc59}Guerra dos Mitos - {FFFFFF}MultiModo"string"Masculino""Feminino");  
                    return 
1;  
                }
            } else {
                
Kick(playerid); 
            }
            return 
1;
        } 
Vi em alguns tutoriais de SQLITE e estгo da mesma forma o que pode ser ?, abri o SQLITE BROWSER e estб criando a tabela com as colunas normalmente, porйm nгo estб inserindo no banco de dados as informaзхes do player.

Quando o player desconecta do servidor chama a funзгo abaixo:
PHP Code:
SavePlayer(playerid

    
printf("Salvando o Player ID: %d"playerid);
    new 
query[300], DBResult:Result
    
GetPlayerPos(playeridpInfo[playerid][px], pInfo[playerid][py], pInfo[playerid][pz]); 
    
GetPlayerFacingAngle(playeridpInfo[playerid][pa]); 
    
format(querysizeof(query), "UPDATE `contas` SET admin = '%d', email = '%s', senha = '%s', skin = '%d',  px = '%f',  py = '%f',  pz = '%f',  pa = '%f' WHERE `nome` = '%q'",  
        
pInfo[playerid][Admin],
        
pInfo[playerid][Email], 
        
pInfo[playerid][Senha],
        
pInfo[playerid][Skin], 
        
pInfo[playerid][px], 
        
pInfo[playerid][py], 
        
pInfo[playerid][pz], 
        
pInfo[playerid][pa], 
        
DB_Escape(GetPlayerNome(playerid))); 
    
Result db_query(databasequery);   
    
db_free_result(Result); 
    return 
1




Re: Problema com SQLITE - Injury - 26.10.2018

Adicione em seu server.cfg e veja os resultados:

db_logging 1
db_log_queries 1


Re: Problema com SQLITE - Ermanhaut - 26.10.2018

Retire os NOT NULL (exceto do primary key), isso costuma dar erro, eu tinha problemas com isso direto, atй me ligar do problema.

E de quebra, use isto:
Й um macro pra facilitar a vida

pawn Code:
#define free_db_query(%0,%1) db_free_result(db_query(%0,%1))



Re: Problema com SQLITE - WLSF - 26.10.2018

Oi tudo bem?

Eu quebrei a sua query de criaзгo da tabela para ficar mais organizado, e executei os comandos utilizando o SQLITE online, https://sqliteonline.com/ (talvez te seja util tambйm.)

O erro que estava dando era porque vocк criou um campo chamado `email` *NOT NULL* e vocк nгo estava utilizando ele na hora de fazer o *INSERT*

Code:
CREATE TABLE IF NOT EXISTS contas (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    nome TEXT NOT NULL,
    email TEXT NOT NULL,
    senha TEXT NOT NULL,
    admin INTEGER NOT NULL,
    skin INTEGER NOT NULL,
    px INTEGER NOT NULL,
    py INTEGER NOT NULL,
    pz INTEGER NOT NULL,
    pa INTEGER NOT NULL
);
Quando eu rodei o comando de *INSERT* com o campo email preenchido corretamente funcionou.
Code:
INSERT INTO `contas` (`nome`, `senha`, `email`, `admin`, `skin`, `px`, `py`, `pz`, `pa`) 
        VALUES ('Name', 'pass', 'test@provider.com', 0, 0, 0.0, 0.0, 0.0, 0.0);



Re: Problema com SQLITE - [BOPE]Seu._.Madruga - 27.10.2018

Quote:
Originally Posted by WLSF
View Post
Oi tudo bem?

Eu quebrei a sua query de criaзгo da tabela para ficar mais organizado, e executei os comandos utilizando o SQLITE online, https://sqliteonline.com/ (talvez te seja util tambйm.)

O erro que estava dando era porque vocк criou um campo chamado `email` *NOT NULL* e vocк nгo estava utilizando ele na hora de fazer o *INSERT*

Code:
CREATE TABLE IF NOT EXISTS contas (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    nome TEXT NOT NULL,
    email TEXT NOT NULL,
    senha TEXT NOT NULL,
    admin INTEGER NOT NULL,
    skin INTEGER NOT NULL,
    px INTEGER NOT NULL,
    py INTEGER NOT NULL,
    pz INTEGER NOT NULL,
    pa INTEGER NOT NULL
);
Quando eu rodei o comando de *INSERT* com o campo email preenchido corretamente funcionou.
Code:
INSERT INTO `contas` (`nome`, `senha`, `email`, `admin`, `skin`, `px`, `py`, `pz`, `pa`) 
        VALUES ('Name', 'pass', 'test@provider.com', 0, 0, 0.0, 0.0, 0.0, 0.0);
Obrigado pelo site me ajudou muito, referente aos cуdigos eu jб havia conseguido resolver devido eu ter teimoso e sempre nunca desistir kkk mais obrigado a todos. Estou migrando para o SQLITE devido a isto estou tendo esses problemas mas logo logo engrenamos.

E mais uma vez obrigado a todos !


Re: Problema com SQLITE - WLSF - 27.10.2018

Quote:
Originally Posted by [BOPE]Seu._.Madruga
View Post
Obrigado pelo site me ajudou muito, referente aos cуdigos eu jб havia conseguido resolver devido eu ter teimoso e sempre nunca desistir kkk mais obrigado a todos. Estou migrando para o SQLITE devido a isto estou tendo esses problemas mas logo logo engrenamos.

E mais uma vez obrigado a todos !
Referente ao cуdigo, se eu fosse vocк, eu escreveria uma include a parte com cуdigos referentes a escrita/leitura/atualizaзгo do banco sqlite, assim vc consegue isolar o cуdigo e saber quando der erro, e ajeitar o erro mais fбcil.

Assim dentro do seu cуdigo GM mesmo vc sу teria as chamadas dessa include, tipo sqlite_insert, sqlite_read,

Entende?