SrPattif Posted December 18, 2019 Share Posted December 18, 2019 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
Tommy. Posted December 18, 2019 Share Posted December 18, 2019 (edited) 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. dbConnect, dbExec, dbPoll, dbQuery 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 December 18, 2019 by Tommy. Link to comment
KronoS Lettify Posted December 18, 2019 Share Posted December 18, 2019 @Tommy. Ele está usando a database interna do MTA, o ideal dele usar é executeSQLQuery Link to comment
Tommy. Posted December 19, 2019 Share Posted December 19, 2019 5 hours ago, KronoS Lettify said: @Tommy. Ele está usando a database interna do MTA, o ideal dele usar é executeSQLQuery *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 Link to comment
KronoS Lettify Posted December 19, 2019 Share Posted December 19, 2019 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 . OBS: Dúvida dele não foi saciada no chat do Discord Link to comment
Tommy. Posted December 19, 2019 Share Posted December 19, 2019 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 . 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
KronoS Lettify Posted December 19, 2019 Share Posted December 19, 2019 12 minutes ago, Tommy. said: 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". Também pensei a mesma coisa Link to comment
Other Languages Moderators Lord Henry Posted December 20, 2019 Other Languages Moderators Share Posted December 20, 2019 (edited) Eu usaria executeSQLQuery com banco de dados nativo do MTA. Não vejo vantagem em fazer externo com MySQL pois é um pouco mais complicado. E por estar aprendendo, o ideal é começar pelo mais fácil. Edited December 20, 2019 by Lord Henry Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now