Tenho um programa que registra vendas e compras de determinados produtos.
Gostaria de saber qual a forma mais prática de se fazer o acréscimo e o decréscimo da quantidade em estoque do produto,
que é mudada diretamente à medida que vão sendo efetuadas as vendas e as compras.
E também, gostaria de exemplos de códigos.
cara eu entendi o que voce quer fazer, mas como voce quer fazer isso? envolve banco de dados ou é so entre classes?? poe uma parte do codigo para ajudar.
Sim, envolve banco de dados(mysql) e java…
Então, foi mal. Espera mas um poco pra ver se outra pessoa te ajuda que eu não sei nada de mysql(quero dizer banco de dados em geral ).
ok, obrigado
Olá amigo no seu caso provavelmente terá varias pessoas fazendo vendas e compras certo? se for o caso eu faria uma trigger(ou gatilho) a cada novo insert na tabela de compra e venda o mesmo realiza a atualização, outra maneira de fazer seria vc fazer os lançamentos de entrada e saida em uma tabela de movimentação do seu estoque e uma store procedure para consultar o saldo.
Espero ter ajudado
vamos ver o que o pessoal ai responde
Obrigado pela resposta, worldfernando, mas como eu faria essa trigger??? e como fazer para que o java reconheça essa trigger???
você tem algum exemplo??? é que ainda sou iniciante em java…
[quote=rafael15]Obrigado pela resposta, worldfernando, mas como eu faria essa trigger??? e como fazer para que o java reconheça essa trigger???
você tem algum exemplo??? é que ainda sou iniciante em java…[/quote]
Você é iniciante em java ou em programação em geral?
Sabe bem como funciona um banco de dados? Os comandos básicos (INSERT, DELETE, UPDATE, SELECT) ?
Tem noções de como modelar tabelas no banco?
Particulamente não usaria triggers para este tipo de coisa.
Triggers são legais, mas são muito fáceis de serem feitas erradas e mais fáceis ainda de serem esquecidas.
(Quando vai dar manutenção em código, você fica se perguntando quem tá alterando aqueles dados).
sou iniciante em java, já programei em VB6, mas sei mais ou menos como fazer a modelagem de banco de dados e os comandos básicos… mas não sei como fazer stored procedures, triggers, relacionamentos mais avançados, views, isso, nem faço ideia de como fazer… rsrsrsrrsrsrssrrsrsrsrsrrsrs…
Bem, recomendo então que estude mais sobre banco de dados (e sobre Java claro).
Considerando que você tenha uma tabela Venda com o campo Quantidade, uma tabela Estoque com o campo Quantidade , tudo relativo ao produto, seria uma questão de:
INSERT INTO Venda (<outros_campos>, <produto>, Quantidade)...VALUES(<outros_valores>, <produto>, @quantidade)
UPDATE Estoque SET Quantidade = @quantidade WHERE produto = <produto>
Ou seja, não importa como faça, tem que fazer seu sistema executar o UPDATE para cada INSERT feito…
PS: A trigger poderia fazer isso, mas como disse antes, pra mim é uma mágica para algo tão simples.
Obrigado, AbelBueno, pela resposta…
Mas, como sou iniciante em java, não sei como fazer o meu sistema executar a inserção…
Como fazer essa inserção??? Pode ser de ambas as formas…
[quote=rafael15]Obrigado, AbelBueno, pela resposta…
Mas, como sou iniciante em java, não sei como fazer o meu sistema executar a inserção…
Como fazer essa inserção??? Pode ser de ambas as formas…[/quote]
Bom amigo aqui no GUJ tem muito material, da uma olhada na parte de artigos, assim como nosso amigo citou estude mais banco de dados e JAVA :), eu lhe dei um exemplo pois achei que vc so estava na duvida da solução sabe mas pelo que vi na sequencia do tópico vc esta precisando do básico, mas e isso ai vai postando que a gente ajuda. tranquilo?
com relação a fazer inserts e updates vc pode usar JDBC que é mais simples, ai depois vc pode partir para um JPA(Hibernate).
Abração
OK, então, vou dar uma olhada aqui nos artigos… muito obrigado a todos os que me responderam…
Pessoal, eu sei que vcs já me passaram ideias e sugestões de como fazer, mas, como já disse, sou iniciante em java, e já comecei fazendo meu sistema com a JPA(criando os cadastros pelo “criar novo formulário mestre detalhe” do netbeans, o que acho muito bom… prefiro já receber o código pronto do editor, e só ir “lapidando” ele para atender minhas necessidades…) e gostaria que vcs me mandasses algum exemplo(em código java) do que me falaram, se alguém souber alguma forma de se fazer com a JPA, melhor ainda, mas, por favor, me mandem exemplos de código…
Obrigado…
concordo com o que falaram acima um dos problemas de aprender java e sair programando sem saber o basico igual a VB e Delphi sugiro ler alguns tutoriais para entender mais segue um exemplo basico de insert updade et all
import java.sql.*;
import java.util.ArrayList;
import controller.vo.Veiculo;
public class VeiculoDAO {
private static PreparedStatement pstmt = null;
private static ResultSet rs = null;
public static boolean create(Veiculo veiculo) {
try {
//veiculo.setCodVeiculo(Conexao.getAutoInc("Veiculo"));
pstmt = Conexao.getConnection().prepareStatement(
"Insert Into Veiculo(Placa, CodModelo, CodMarca, CodCategoria, Descricao) Values(?,?,?,?,?)");
pstmt.setString(1, veiculo.getPlaca());
pstmt.setInt(2, veiculo.getModelo().getCodModelo());
pstmt.setInt(3,veiculo.getMarca().getCodMarca());
pstmt.setInt(4, veiculo.getCategoria().getCodCategoria());
pstmt.setString(5, veiculo.getDescricao());
pstmt.executeUpdate();
pstmt.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static boolean update(Veiculo veiculo) {
try {
pstmt = Conexao.getConnection().prepareStatement(
"Update Veiculo Set CodModelo=?, CodMarca=?, CodCategoria=?, Descricao=? Where Placa = ?");
pstmt.setInt(1, veiculo.getModelo().getCodModelo());
pstmt.setInt(2,veiculo.getMarca().getCodMarca());
pstmt.setInt(3, veiculo.getCategoria().getCodCategoria());
pstmt.setString(4, veiculo.getDescricao());
pstmt.setString(5, veiculo.getPlaca());
pstmt.executeUpdate();
pstmt.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static boolean delete(Veiculo veiculo) {
try {
pstmt = Conexao.getConnection().prepareStatement(
"Delete From Veiculo Where Placa = ?");
pstmt.setString(1, veiculo.getPlaca());
pstmt.executeUpdate();
pstmt.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static ArrayList<Veiculo> getAll() {
try {
ArrayList<Veiculo> listAll = null;
Veiculo veiculo = new Veiculo();
pstmt = Conexao.getConnection().prepareStatement(
"Select * From Veiculo Order By Descricao");
rs = pstmt.executeQuery();
if (rs.next()) {
listAll = new ArrayList<Veiculo>();
do {
veiculo = new Veiculo();
veiculo.setPlaca(rs.getString("Placa"));
veiculo.setModelo(ModeloDAO.getById(rs.getInt("CodModelo")));
veiculo.setMarca(MarcaDAO.getById(rs.getInt("CodMarca")));
veiculo.setCategoria(CategoriaDAO.getById(rs.getInt("CodCategoria")));
veiculo.setDescricao(rs.getString("Descricao"));
listAll.add(veiculo);
} while (rs.next());
}
rs.close();
pstmt.close();
return listAll;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static Veiculo getById(String placa) {
try {
Veiculo veiculo = null;
pstmt = Conexao.getConnection().prepareStatement(
"Select * From Veiculo Where Placa = ?");
pstmt.setString(1, placa);
rs = pstmt.executeQuery();
if (rs.next()) {
veiculo = new Veiculo();
veiculo.setPlaca(rs.getString("Placa"));
veiculo.setModelo(ModeloDAO.getById(rs.getInt("CodModelo")));
veiculo.setMarca(MarcaDAO.getById(rs.getInt("CodMarca")));
veiculo.setCategoria(CategoriaDAO.getById(rs.getInt("CodCategoria")));
veiculo.setDescricao(rs.getString("Descricao"));
}
rs.close();
pstmt.close();
return veiculo;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
obrigado, labavel, pelo exemplo de código…