Como faço para inserir um atributo do tipo enum
:
Exemplo:
enum sexo { Masculino , Feminino }
no NetBens com MySQL?
Como faço para inserir um atributo do tipo enum
:
Exemplo:
enum sexo { Masculino , Feminino }
no NetBens com MySQL?
Desde quando netbeans insere no banco de dados?
Você vai mandar o cliente instalar netbeans para rodar a aplicação ou vai criar um executável java?
De qualquer forma, um enum pode ter duas formas: numérica ou literal.
A forma mais comum é como literal. Em java, literal é String. Nos bancos de dados, array de char ou varchar.
Usando jdbc puro, você pode invocar o método name() do enum para inserí-lo no banco de dados.
vc tem algum exemplo ?
Outra coisa quando eu falo inserir quis dizer que estou fazendo um método inserir dentro do netbens
Cara, entenda de uma vez, você está desenvolvendo em java, php, c, c++, asp, ruby ou o que for, nunca em netbeans. Netbeans é a ferramenta que você usa para criar seus códigos, só isso.
Como você está fazendo? Onde está teu código?
Essa é a classe
public abstract class Pessoa {
public String nome;
public Sexo sexo;
public enum Sexo{
Masculino, Feminino;
}
}
public class Cliente extends Pessoa implements ICrud
{
public String endereco;
public String cpf;
}
E esse é o método
public void Inserir() {
try {
String sqlInsert;
sqlInsert = "INSERT INTO teste (nome,sexo,endereco,cpf) VALUES"
+ " ('" + this.nome + "','" + Sexo.valueOf("Masculino")+ "','" + this.endereco + "','" + this.cpf + "')";
Conexao.getConexao();
Conexao.getComandoSql(sqlInsert);
}
catch (Exception e) {
JOptionPane.showMessageDialog(null,"Erro ao executar o comando Inserir :" +e );
}
}
enum
devem estar em letras Maiúsculas.Exemplo:
public enum Sexo
{
MASCULINO, FEMININO;
}
Eu prefiro usar o método Sexo.MASCULINO.name()
ou Sexo.FEMININO.name()
para obter o valor do mesmo em String
.
E como eu faço esse método ?
é JDBC puro? tem como colocar essa classe Conexao
?
tem como colocar essa classe Conexao?
public class Conexao {
private static final String driver = "com.mysql.jdbc.Driver";
private static final String url = "jdbc:mysql://localhost:3306/infox";
private static final String usuario = "root";
private static final String senha = "";
private static Connection con = null;
public static Connection getConexao() throws Exception{
try {
Class.forName(driver);
con = DriverManager.getConnection(url,usuario,senha);
//JOptionPane.showMessageDialog(null," Conectado ");
return con;
}
catch (SQLException e) {
JOptionPane.showMessageDialog(null,"Erro ao conectar ao Banco : " +e );
}
return null;
}
public static void getComandoSql(String sql) throws SQLException{
try
{
PreparedStatement ps = con.prepareStatement(sql) ;
ps.executeUpdate();
}
catch (Exception e) {
JOptionPane.showMessageDialog(null,"Erro de Sql : " +e );
}
}
}
Luiz é sim JDBC puro sem ORM, pera vou exemplificar isso no seu banco você tem como mandar a script de criação da tabela
?
Enum Sexo
public enum Sexo
{
MASCULINO, FEMININO;
}
Layout Tabela
CREATE TABLE `infox`.`teste2`
(
`nome` VARCHAR(30) NULL,
`sexo` VARCHAR(16) NULL,
`endereco` VARCHAR(45) NULL,
`cpf` VARCHAR(15) NULL
);
Classe Conexão
public class Conexao
{
private static final String driver = "com.mysql.jdbc.Driver";
private static final String url = "jdbc:mysql://localhost:3306/infox";
private static final String usuario = "root";
private static final String senha = "";
private static Connection con = null;
public static Connection getConexao() throws Exception{
try {
Class.forName(driver);
con = DriverManager.getConnection(url,usuario,senha);
//JOptionPane.showMessageDialog(null," Conectado ");
return con;
}
catch (SQLException e) {
JOptionPane.showMessageDialog(null,"Erro ao conectar ao Banco : " +e );
}
return null;
}
public static void getComandoSql(String sql) throws SQLException{
try
{
PreparedStatement ps = con.prepareStatement(sql) ;
ps.executeUpdate();
}
catch (Exception e) {
JOptionPane.showMessageDialog(null,"Erro de Sql : " +e );
}
}
}
E para fazer os métodos com enum ?
Vou propor um exemplo, só aguarde um pouquinho que o Netbeans demora para instalar tudo bem?
ok
##Deveria ser assim:
Observação: é um exemplo completo de um CRUD
da tabela teste
, observer o Script
de criação da tabela no sexo enum('MASCULINO','FEMININO') NOT NULL,
ou seja, a definição correta na tabela e no código.
Tabela:
CREATE TABLE `teste` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(30) NOT NULL,
`endereco` varchar(45) NOT NULL,
`sexo` enum('MASCULINO','FEMININO') NOT NULL,
`cpf` varchar(15) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Enum
public enum Sexo
{
MASCULINO, FEMININO;
}
Classe modelo: Teste
package javaapplication1.Models;
public class Teste
{
private int id;
private String nome;
private String endereco;
private String cpf;
private Sexo sexo;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public Sexo getSexo() {
return sexo;
}
public void setSexo(Sexo sexo) {
this.sexo = sexo;
}
}
Classe Conexao:
package javaapplication1.Models;
import java.sql.*;
public class Connect
{
private static final String driver = "com.mysql.jdbc.Driver";
private static final String url = "jdbc:mysql://localhost:3306/homestead";
private static final String usuario = "root";
private static final String senha = "senha";
private static java.sql.Connection con = null;
public static Connection getInstance() throws ClassNotFoundException, SQLException
{
if (con == null)
{
Class.forName(driver);
con = DriverManager.getConnection(url,usuario,senha);
}
return con;
}
}
Classe DaoTeste:
package javaapplication1.Models;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class DaoTeste
{
private final Connection connection;
public DaoTeste(Connection connection)
{
this.connection = connection;
}
public Teste add(Teste value) throws SQLException
{
String sql = "INSERT INTO teste(nome, endereco, sexo, cpf) VALUES(?,?,?,?);";
PreparedStatement stmt = this.connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
stmt.setString(1, value.getNome());
stmt.setString(2, value.getEndereco());
stmt.setString(3, value.getSexo().name());
stmt.setString(4, value.getCpf());
stmt.executeUpdate();
ResultSet key = stmt.getGeneratedKeys();
if (key.next())
value.setId(key.getInt(1));
return value;
}
public boolean edit(Teste value) throws SQLException
{
String sql = "UPDATE teste SET nome=?, endereco=?, sexo=?, cpf=? where id=?";
PreparedStatement stmt = this.connection.prepareStatement(sql);
stmt.setString(1, value.getNome());
stmt.setString(2, value.getEndereco());
stmt.setString(3, value.getSexo().name());
stmt.setString(4, value.getCpf());
stmt.setInt(5, value.getId());
return stmt.execute();
}
public Teste find(int id) throws SQLException
{
Teste t = null;
String sql = "SELECT * FROM teste where id=?";
PreparedStatement stmt = this.connection.prepareStatement(sql);
stmt.setInt(1, id);
ResultSet query = stmt.executeQuery();
if (query.next())
{
t = new Teste();
t.setId(query.getInt("id"));
t.setNome(query.getString("nome"));
t.setEndereco(query.getString("endereco"));
t.setCpf(query.getString("cpf"));
t.setSexo(Enum.valueOf(Sexo.class, query.getString("Sexo")));
}
return t;
}
public List<Teste> all() throws SQLException
{
List<Teste> t = new ArrayList<>();
String sql = "SELECT * FROM teste ORDER BY id";
PreparedStatement stmt = this.connection.prepareStatement(sql);
ResultSet query = stmt.executeQuery();
Teste at = null;
while (query.next())
{
at = new Teste();
at.setId(query.getInt("id"));
at.setNome(query.getString("nome"));
at.setEndereco(query.getString("endereco"));
at.setCpf(query.getString("cpf"));
at.setSexo(Enum.valueOf(Sexo.class, query.getString("Sexo")));
t.add(at);
}
return t;
}
}
Como usar:
DaoTeste daoTeste = new DaoTeste(Connect.getInstance());
for(Teste tr :daoTeste.all())
{
System.out.println(tr.getNome() + " " + tr.getSexo());
}
Teste t = new Teste();
t.setCpf("11111111111");
t.setEndereco("Endereco");
t.setNome("Nome");
t.setSexo(Sexo.FEMININO);
DaoTeste daoTeste = new DaoTeste(Connect.getInstance());
daoTeste.add(t);
Teste t = new Teste();
t.setId(2);
t.setCpf("11111111111");
t.setEndereco("Endereco");
t.setNome("Nome");
t.setSexo(Sexo.FEMININO);
DaoTeste daoTeste = new DaoTeste(Connect.getInstance());
daoTeste.add(t);
DaoTeste daoTeste = new DaoTeste(Connect.getInstance());
Teste t = daoTeste.find(1);
Valeu companheiro obrigado