Bíblia em Java - Conexão com o Postgres
Atualizado em:
[caption id="attachment_966" align="aligncenter" width="660"]
Bíblia em Java[/caption]
Introdução
Este é um simples exemplo de conexão com o banco de dados, neste caso com o PostgreSQL, utilizando o Java. Como é um exemplo simples, não utilizei nenhum framework como Hibernate ou JPA, apenas a conexão direta com o PreparedStatement.
Instalação
Baixe o SQL da bíblia aqui, e execute no PostgreSQL em um banco chamado bíblia. No projeto Java, não se esqueça de importar a biblioteca do Driver JDBC do PostgreSQL.
Código Fonte
Utilizei apenas duas classes, uma para realizar a conexão, através de um Singleton, e um JFrame para exibir o conteúdo.
Na classe ConexaoBD.java, deve ser passado os parâmetros de conexão com o banco, e há um método estático para obter um capítulo, passando como parâmetro o livro e o número do capítulo.
Na classe Frame.java, há o método main, e uma caixa de seleção de livros e um controle giratório para selecionar o capítulo, que é exibido também nesta tela.
ConexaoBD.java
package biblia;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ConexaoBD {
private static Connection instance = null;
private ConexaoBD() {
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(ConexaoBD.class.getName()).log(Level.SEVERE, null, ex);
}
try {
instance = DriverManager.getConnection("jdbc:postgresql://localhost:5432/biblia", "postgres", "postgres");
} catch (SQLException ex) {
Logger.getLogger(ConexaoBD.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static Connection getInstance() throws SQLException {
if (instance == null || instance.isClosed()) {
new ConexaoBD();
}
return instance;
}
public static String recuperarCapitulo(int livro, int capitulo) throws SQLException {
Connection conn = null;
ResultSet rs = null;
StringBuilder sql = new StringBuilder();
String texto = null;
sql.append("select versiculo,texto ");
sql.append("from versiculos ");
sql.append("where id_livro=? and capitulo=? ");
sql.append("ORDER by id");
try {
conn = ConexaoBD.getInstance();
PreparedStatement ps = conn.prepareStatement(sql.toString());
ps.setInt(1, livro);
ps.setInt(2, capitulo);
rs = ps.executeQuery();
while (rs.next()) {
String versiculo = rs.getString(1) + ". " + rs.getString(2) + "\n";
if (texto == null) {
texto = versiculo;
} else {
texto += versiculo;
}
}
if (texto == null) {
texto = "Este capítulo não existe neste livro";
}
} finally {
if (rs != null) {
rs.close();
}
if (conn != null) {
conn.close();
}
}
return texto;
}
}Frame.java
package biblia;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.SpinnerNumberModel;
public class Frame extends javax.swing.JFrame {
public Frame() {
super("Bíblia Sagrada em Java");
initComponents();
this.setLocationRelativeTo(null);
SpinnerNumberModel modelCap = new SpinnerNumberModel(1, 1, 150, 1);
jSpinnerCap.setModel(modelCap);
jComboBoxLivros.addItem("Genesis");
jComboBoxLivros.addItem("Exodo");
jComboBoxLivros.addItem("Levitico");
jComboBoxLivros.addItem("Numeros");
jComboBoxLivros.addItem("Deuteronomio");
jComboBoxLivros.addItem("Josue");
jComboBoxLivros.addItem("Juizes");
jComboBoxLivros.addItem("Rute");
jComboBoxLivros.addItem("ISamuel");
jComboBoxLivros.addItem("IISamuel");
jComboBoxLivros.addItem("IReis");
jComboBoxLivros.addItem("IIReis");
jComboBoxLivros.addItem("ICronicas");
jComboBoxLivros.addItem("IICronicas");
jComboBoxLivros.addItem("Esdras");
jComboBoxLivros.addItem("Neemias");
jComboBoxLivros.addItem("Ester");
jComboBoxLivros.addItem("Jo");
jComboBoxLivros.addItem("Salmos");
jComboBoxLivros.addItem("Proverbios");
jComboBoxLivros.addItem("Eclesiastes");
jComboBoxLivros.addItem("CanticodosCanticos");
jComboBoxLivros.addItem("Isaias");
jComboBoxLivros.addItem("Jeremias");
jComboBoxLivros.addItem("LamentacoesJeremias");
jComboBoxLivros.addItem("Ezequiel");
jComboBoxLivros.addItem("Daniel");
jComboBoxLivros.addItem("Oseias");
jComboBoxLivros.addItem("Joel");
jComboBoxLivros.addItem("Amos");
jComboBoxLivros.addItem("Obadias");
jComboBoxLivros.addItem("Jonas");
jComboBoxLivros.addItem("Miqueias");
jComboBoxLivros.addItem("Naum");
jComboBoxLivros.addItem("Habacuque");
jComboBoxLivros.addItem("Sofonias");
jComboBoxLivros.addItem("Ageu");
jComboBoxLivros.addItem("Zacarias");
jComboBoxLivros.addItem("Malaquias");
jComboBoxLivros.addItem("Mateus");
jComboBoxLivros.addItem("Marcos");
jComboBoxLivros.addItem("Lucas");
jComboBoxLivros.addItem("Joao");
jComboBoxLivros.addItem("Atos");
jComboBoxLivros.addItem("Romanos");
jComboBoxLivros.addItem("ICorintios");
jComboBoxLivros.addItem("IICorintios");
jComboBoxLivros.addItem("Galatas");
jComboBoxLivros.addItem("Efesios");
jComboBoxLivros.addItem("Filipenses");
jComboBoxLivros.addItem("Colossenses");
jComboBoxLivros.addItem("ITessalonicenses");
jComboBoxLivros.addItem("IITessalonicenses");
jComboBoxLivros.addItem("ITimoteo");
jComboBoxLivros.addItem("IITimoteo");
jComboBoxLivros.addItem("Tito");
jComboBoxLivros.addItem("Filemom");
jComboBoxLivros.addItem("Hebreus");
jComboBoxLivros.addItem("Tiago");
jComboBoxLivros.addItem("IPedro");
jComboBoxLivros.addItem("IIPedro");
jComboBoxLivros.addItem("IJoao");
jComboBoxLivros.addItem("IIJoao");
jComboBoxLivros.addItem("IIIJoao");
jComboBoxLivros.addItem("Judas");
jComboBoxLivros.addItem("Apocalipse");;
}
@SuppressWarnings("unchecked")
//
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
campoTexto = new javax.swing.JTextArea();
jComboBoxLivros = new javax.swing.JComboBox();
jSpinnerCap = new javax.swing.JSpinner();
botaoConsultar = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
campoTexto.setEditable(false);
campoTexto.setColumns(20);
campoTexto.setRows(5);
jScrollPane1.setViewportView(campoTexto);
jComboBoxLivros.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBoxLivrosActionPerformed(evt);
}
});
botaoConsultar.setText("Consultar");
botaoConsultar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
botaoConsultarActionPerformed(evt);
}
});
jLabel1.setText("Livro:");
jLabel2.setText("Capítulo:");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addGap(5, 5, 5)
.addComponent(jComboBoxLivros, 0, 268, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSpinnerCap, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(botaoConsultar, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(12, 12, 12)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jComboBoxLivros, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jSpinnerCap, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(botaoConsultar)
.addComponent(jLabel1)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 354, Short.MAX_VALUE))
);
pack();
}//
private void botaoConsultarActionPerformed(java.awt.event.ActionEvent evt) {
int numLivro = jComboBoxLivros.getSelectedIndex() + 1;
int numCap = Integer.valueOf(jSpinnerCap.getValue().toString());
String capitulo = "";
try {
capitulo = ConexaoBD.recuperarCapitulo(numLivro, numCap);
} catch (SQLException ex) {
Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
}
campoTexto.setText(capitulo);
campoTexto.setCaretPosition(0);
}
private void jComboBoxLivrosActionPerformed(java.awt.event.ActionEvent evt) {
jSpinnerCap.setValue(1);
}
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Frame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Frame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton botaoConsultar;
private javax.swing.JTextArea campoTexto;
private javax.swing.JComboBox jComboBoxLivros;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSpinner jSpinnerCap;
// End of variables declaration
}Conclusão
Como disse, este foi um simples exemplo de conexão com o banco de dados usando Java, espero que seja útil.
[]'s
Deixe um comentário