Jump to content

Preciso de ajuda (Banco de Dados)


Recommended Posts

Olá pessoal, boa tarde!
Faz tempo que tenho um conhecimento relativamente avançado em Lua e MTA Scripting, porém não sabia absolutamente NADA em relação á banco de dados SQLite.

Há pouco tempo atrás aprendi sobre, porém preciso de ajuda com o seguinte problema:

 » Preciso salvar no banco de dados, a cada vez que um comando é efetuado, salvar +1 número na célula da coluna... Deu pra entender?

Tipo assim:
Carro             Estoque
Camaro        1

 

Quando eu efetuar o comando:

Carro            Estoque
Camaro        1 +1

*eu preciso pegar o valor existente na coluna e somar 1, porém estou com problemas para fazer haha

*Não postei meu código pois simplesmente não consegui fazer um... hahah

Link to comment

Espero que você esteja com vontade de aprender, Irei lhe passar todas as funções que você vai precisar, Se der algum erro só falar aqui, que vou te ajudar.

dbConnectdbExecdbPolldbQuery

 

Primeiro de tudo você usa o dbConnect para conectar com o sqlite.

db = dbConnect("sqlite", "database.db")

 

Agora para criar as tabelas no banco de dados você vai usar o dbExec

dbExec(db, "CREATE TABLE IF NOT EXISTS NOME_TABELA (ID, Carro, Estoque)")

 

Para você saber se o Carro já está cadastrado no banco de dados para fazer a alteração do Estoque você vai usar o dbPoll e dbQuery

local data = dbPoll(dbQuery(db, "SELECT * FROM NOME_TABELA WHERE Carro = ? ", "Camaro"), -1)

 

Agora você vai verificar se na coluna "Carro" da tabela "NOME_TABELA" tem o carro chamado "Camaro"

if #data >= 1 then -- se for <= 0 o carro não vai estar cadastrado (ou seja ele não existe no banco de dados)

 

Para atualizar o valor você vai usar o dbQuery

dbQuery(db, "UPDATE NOME_TABELA SET Estoque = ? WHERE Carro = ?", 2, "Camaro") -- Com esse exemplo ele vai setar 2 em "Estoque" do "Carro" Camaro

 

Caso o Camaro não esteja cadastrado e você queira cadastrar por comando, você vai usar também o dbQuery

dbQuery(db, "INSERT INTO NOME_TABELA VALUES(?, ?, ?)", getFreeID(), "Camaro", 0)

 

Require para pegar um ID livre/único para cada veículo cadastrado:

function getFreeID()
	local result = dbPoll(dbQuery(db, "SELECT ID FROM NOME_TABELA ORDER BY ID ASC"), -1)
	newID = false
	for i, id in pairs (result) do
		if id["ID"] ~= i then
			newID = i
			break
		end
	end
	if newID then return newID else return #result + 1 end
end

 

Edited by Tommy.
Link to comment
12 hours ago, Tommy. said:

*Não postei meu código pois simplesmente não consegui fazer um... hahah


Como sabes que ele ta usando a interna? em nenhum momento ele falou, kk

Ele veio com esta mesma dúvida no Discord, então tentei ajudá-lo por lá e adquiri essas informações :D . OBS: Dúvida dele não foi saciada no chat do Discord

Link to comment
44 minutes ago, KronoS Lettify said:

Ele veio com esta mesma dúvida no Discord, então tentei ajudá-lo por lá e adquiri essas informações :D . OBS: Dúvida dele não foi saciada no chat do Discord

Eu li minha resposta ali em cima e peço perdão pela a ignorância, esse não foi o intuito.

Bom se ele for realmente usar o banco de dados interno da para ele usar a função que você disse. executeSQLQuery, mas eu não recomendo.
Vamos aguardar a resposta dele sobre o meu "guia".

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...