Boa tarde a todos é a primeira vez que entro em um fórum para tirar duvidas estou aprendendo a programar em java Netbeans 8.2 e estou com um problema de erro.
tenho um formulário com uma tabela na arquitetura MVC e no dao fiz o código para linkar com o BD mysql e mostrar na jtable do form aparentemente está tudo certo ele executa mas aparece a mensagem .: O erro foi java.sql.SQLException: SQL String can not be NULL
CONSTRUÍDO COM SUCESSO (tempo total: 24 segundos).
Engraçado que ja fiz o mesmo código em outro programa e deu certo .
abaixo vou colocar o código…
Aqui o código do DAO.
package dao;
import control.ConnectionFactory;
import control.TesteConexao;
import java.sql.Connection;
import model.AgendaModel;
import java.sql.*;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import java.sql.ResultSet;
import java.sql.SQLException;
import View.JFrameBusca;
public class AgendaDao {
public static Connection connection;
int id;
String nome, endereco, datnas, tel, email;
public AgendaDao(){
this.connection = new ConnectionFactory().getConnection();
}
public void adiciona(AgendaModel agenda){
String sql = "insert into pessoas(nome,endereco,nascimento,telefone,email)values(?,?,?,?,?)";
try{
try (PreparedStatement stmt = connection.prepareStatement(sql)) {
stmt.setString(1, agenda.getNome());
stmt.setString(2, agenda.getEndereco());
stmt.setString(3, agenda.getDatnas());
stmt.setString(4, agenda.getTel());
stmt.setString(5, agenda.getEmail());
stmt.execute();
}
}
catch(SQLException u){
throw new RuntimeException(u);
}
}
public void excluir(AgendaModel agenda){
String sql = "Delete from pessoas where nome=?;";
try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, agenda.getNome());
stmt.execute();
stmt.close();
}
catch (SQLException u) {
throw new RuntimeException(u);
}
}
public void alterar(AgendaModel agenda){
String sql = "Update pessoas(id,nome,endereco,nascimento,telefone,email)values(?,?,?,?,?,?)where id = ?";
try{
try (PreparedStatement stmt = connection.prepareStatement(sql)) {
stmt.setInt(1, agenda.getid());
stmt.setString(2, agenda.getNome());
stmt.setString(3, agenda.getEndereco());
stmt.setString(4, agenda.getDatnas());
stmt.setString(5, agenda.getTel());
stmt.setString(6, agenda.getEmail());
stmt.setInt(7, agenda.getid());
stmt.execute();
}
}
catch(SQLException u){
throw new RuntimeException(u);
}
}
//cria e preenche a tabela
public void PopularJTable(String sql){
//sql = "SELECT * FROM pessoas";
// this.connection = new ConnectionFactory().getConnection();
try {
//connection = ConnectionFactory.getConnection(); //abre a conexão com o banco
try ( //connection = DriverManager.getConnection("jdbc:mysql://localhost:3308/pais","root","");
PreparedStatement stmt = (PreparedStatement)connection.prepareStatement(sql)) { //prepara o Statement para receber dados.
stmt.execute(); //cria ovetor
ResultSet resultado = stmt.executeQuery(sql); //aponta para os registros do BD
JFrameBusca b = new JFrameBusca();
DefaultTableModel model = (DefaultTableModel) b.jTable1.getModel(); //aponta para o modelo da tabela criada
model.setNumRows(0); // comessando da linha zero
while (resultado.next()){
model.addRow(new Object[]{
resultado.getInt("id"),
resultado.getString("nome"),
resultado.getString("endereco"),
resultado.getDate("nascimento"), //prenche a tabela com os dados do BD
resultado.getString("telefone"),
resultado.getString("email")
});
}
}
}
catch (SQLException ex){
System.out.println("O erro foi "+ex); //mensagem de eccessão de erro
}
}
}
Aqui o código do Form
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package View;
import dao.AgendaDao;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import model.AgendaModel;
import java.sql.Connection;
import java.sql.*;
import java.sql.PreparedStatement;
//import com.mysql.jdbc.PreparedStatement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.table.DefaultTableModel;
import java.awt.event.WindowListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
/**
*
* @author Escola
*/
public class JFrameBusca extends javax.swing.JFrame {
/**
* Creates new form JFrameBusca
*/
String sql;
public JFrameBusca() {
initComponents();
AgendaDao dao = new AgendaDao();
dao.PopularJTable(sql);
String sql = "SELECT * FROM pessoas";
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jLabelNome = new javax.swing.JLabel();
jTNome = new javax.swing.JTextField();
jBBuscar = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"ID", "Nome", "Endereço", "Nascimento", "Telefone", "Email"
}
));
jScrollPane1.setViewportView(jTable1);
jLabelNome.setText("Nome.:");
jBBuscar.setText("Buscar");
jBBuscar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jBBuscarActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabelNome)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTNome, javax.swing.GroupLayout.PREFERRED_SIZE, 225, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jBBuscar)))
.addContainerGap(18, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(16, 16, 16)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelNome)
.addComponent(jTNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jBBuscar))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
pack();
setLocationRelativeTo(null);
}// </editor-fold>
private void jBBuscarActionPerformed(java.awt.event.ActionEvent evt) {
// AgendaDao dao = new AgendaDao();
// dao.PopularJTable(sql);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
// /* Set the Nimbus look and feel */
// //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
// /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
// * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
// */
// 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(JFrameBusca.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
// } catch (InstantiationException ex) {
// java.util.logging.Logger.getLogger(JFrameBusca.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
// } catch (IllegalAccessException ex) {
// java.util.logging.Logger.getLogger(JFrameBusca.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
// } catch (javax.swing.UnsupportedLookAndFeelException ex) {
// java.util.logging.Logger.getLogger(JFrameBusca.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
// }
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JFrameBusca().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jBBuscar;
private javax.swing.JLabel jLabelNome;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField jTNome;
public javax.swing.JTable jTable1;
// End of variables declaration
}
Tenho certeza que é algo fácil mas não estou achando pelo que eu entendi fala que a variavel sql nao pode ser nula sei lá
Agradeço muito pela ajuda e desculpem se postei ou fiz algo errado pois é minha primeira vez…
vlw.