0
Guys, I’m having a problem I’m having trouble solving in Java.
The intention is to connect to a database SQLite
. But I’m having trouble inserting it.
Take a look at the code, please.
package conexao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConexaoBD {
private Connection conecta;
public Connection getConnection(){
//avisando que o banco q vou utilizar é sqlite
try {
DriverManager.registerDriver(new org.sqlite.JDBC());
} catch (SQLException e) {
System.err.println("Problemas na hora de registrar driver");
System.err.println("Saindo...");
System.exit(1);
}
//Conectando no BD
try {
conecta = DriverManager.getConnection("jdbc:sqlite:estoque.sqlite");
} catch (SQLException e) {
System.out.println("Impossivel se conectar no BD");
System.exit(1);
}
return conecta;
}
}
Second class :
package entidades;
import java.sql.Statement;
import org.sqlite.SQLiteConnection;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import conexao.ConexaoBD;
public class Produto {
private String descricao;
private int estoque_minimo;
private int estoque_maximo;
public Produto(String descricao, int estoque_minimo, int estoque_maximo) {
super();
setDescricao(descricao);
setEstoque_minimo(estoque_minimo);
setEstoque_maximo(estoque_maximo);
Inserir();
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public int getEstoque_minimo() {
return estoque_minimo;
}
public void setEstoque_minimo(int estoque_minimo) {
this.estoque_minimo = estoque_minimo;
}
public int getEstoque_maximo() {
return estoque_maximo;
}
public void setEstoque_maximo(int estoque_maximo) {
this.estoque_maximo = estoque_maximo;
}
public void Inserir(){
ConexaoBD banco = new ConexaoBD();
Connection conecta = banco.getConnection();
//cria objeto
Produto p = new Produto(getDescricao(), getEstoque_minimo(), getEstoque_maximo());
try {
Statement stmt = conecta.createStatement();
//pegando o id maximo e somar mais um para adicionar o proximo produto
ResultSet result = stmt.executeQuery("SELECT MAX(id) FROM produto");
result.next();
int idProx = result.getInt("MAX(id)");
idProx++;
// System.out.println(idProx);
//Insere o produto
String sql = "INSERT INTO produto(id,descricao,estoque_minimo, estoque_maximo) VALUES('idProx','p.getDescricao()','p.getEstoque_minimo()','p.getEstoque_maximo()');";
stmt.executeUpdate(sql);
} catch (SQLException u) {
throw new RuntimeException(u);
}
}
}
Graphical Interface
package interface_grafica;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.WindowListener;
import java.sql.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.xml.crypto.Data;
import entidades.Produto;
public class Janela extends JFrame{
/*
JFRAME PRINCIAL
*/
private JMenuBar menuBar;
private JLabel status;
private JMenu menuProduto;
private JMenuItem addProduto, listarProduto;
/*
* Adicao de produto
*/
private JLabel labelDescricao, labelEstoqueMin, labelEstoqueMax;
private JTextField tDescricao, tEstoqueMin, tEstoqueMax;
private JButton btnSalvar;
private JPanel telaDeAdicao;
private void addPainelProduto() {
labelDescricao = new JLabel("Descrição");
labelEstoqueMin = new JLabel("Estoque mínimo");
labelEstoqueMax = new JLabel("Estoque Máximo");
tDescricao = new JTextField(20);
tEstoqueMin = new JTextField(10);
tEstoqueMax = new JTextField(10);
btnSalvar = new JButton("Salvar");
btnSalvar.addActionListener((e)->{
Produto produto = new Produto(tDescricao.getText(), Integer.parseInt(tEstoqueMin.getText()),
Integer.parseInt(tEstoqueMax.getText()));
status.setText(produto.toString());
});
telaDeAdicao = new JPanel(new FlowLayout());
telaDeAdicao.add(labelDescricao);
telaDeAdicao.add(tDescricao);
telaDeAdicao.add(labelEstoqueMin);
telaDeAdicao.add(tEstoqueMin);
telaDeAdicao.add(labelEstoqueMax);
telaDeAdicao.add(tEstoqueMax);
telaDeAdicao.add(btnSalvar);
}
private void constroiBarradeStatus() {
status = new JLabel("Status");
add(status, BorderLayout.SOUTH);
}
private void constroiMenu() {
menuBar = new JMenuBar();
menuProduto = new JMenu("Produto");
addProduto = new JMenuItem("Adicionar");
listarProduto = new JMenuItem("Listar");
addProduto.addActionListener((e)->{
status.setText("Adicionando Produtos");
add(telaDeAdicao);
});
listarProduto.addActionListener((e)->{
status.setText("Listando Produtos");
//nao implementado ainda
});
menuProduto.add(listarProduto);
menuProduto.add(addProduto);
menuBar.add(menuProduto);
setJMenuBar(menuBar);
}
}
For the product to be added I put in a graphical interface the fields that are passed by parameter after the user type and click on SAVE, IE, the parameters will be passed in the Actionlistener of the save button in IG.
It’s not working, someone knows what it is?
ERROR:
Exception in thread "AWT-Eventqueue-0" java.lang.Stackoverflowerror at org.sqlite.core.CoreStatement.(Corestatement.java:39) at org.sqlite.jdbc3.Jdbc3statement.(Jdbc3statement.java:21) at org.sqlite.jdbc4.Jdbc4statement.(Jdbc4statement.java:11) at org.sqlite.jdbc4.Jdbc4connection.createStatement(Jdbc4connection.java:41) at org.sqlite.jdbc3.Jdbc3connection.createStatement(Jdbc3connection.java:193) at org.sqlite.Sqliteconfig.apply(Sqliteconfig.java:123) at org.sqlite.core.CoreConnection.(Coreconnection.java:85) at org.sqlite.jdbc3.Jdbc3connection.(Jdbc3connection.java:26) at org.sqlite.jdbc4.Jdbc4connection.(Jdbc4connection.java:24) at org.sqlite.Sqliteconnection.(Sqliteconnection.java:45) at org.sqlite.JDBC.createConnection(JDBC.java:114) at org.sqlite.JDBC.connect(JDBC.java:88) at java.sql.Drivermanager.getConnection(Unknown Source) at java.sql.Drivermanager.getConnection(Unknown Source) at conexao.ConexaoBD.getConnection(Conexaobd.java:25) at entidades.Product.Insert(Product.java:50) at entities. Product.(Product.java:23) at entidades.Product.Insert(Product.java:53) at entities. Product.(Product.java:23) at entidades.Product.Insert(Product.java:53) at entities. Product. (Product.java:23)
After that it loops with this
at entities.Product.Insert(Product.java:53)
at entities. Product. (Product.java:23)
and after a while to
He comes to fall into one of these
System.exit(1)
or he can create the connection?– Victor Stafusa
No, it connects normally, but I just can’t get it into the bank
– Vitor Ezequiel
What is the mistake that?
– Tiago Almeida
I put it up there.
– Vitor Ezequiel