Do tipo int ao Banco de dados

2 respostas
L

É possivel variaveis do tipo int dar problemas ao enviar informações convertidas de um textfield??

p.cpf = Integer.parseInt(t7.getText()); Onde “p” é um objeto criado de uma classe Model que contém o “cpf” do tipo inteiro

“t7” é o campo TextField do cpf,

meu código de conecção MySQL:

public boolean cadastrarPessoa(Pessoa novaPessoa){
		try {
		 Connection connection = GerenciadorBanco.getConexaoMySQL();
		 Statement comando;
		 comando = connection.createStatement();
		 String sql = "insert into  pessoa (cpf)   VALUES ('"+ novaPessoa.cpf+"' )";
		System.out.println(sql);	
		 boolean resultado = comando.execute(sql);
		 return resultado;
		 
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			GerenciadorBanco.FecharConexao();
		}
		
		return true;
	}

Desculpem a pergunta, pois sou iniciante em java e só estou ultilizando acesso ao banco a pouco tempo!

2 Respostas

jks1903

LucasVilarim:
É possivel variaveis do tipo int dar problemas ao enviar informações convertidas de um textfield??

p.cpf = Integer.parseInt(t7.getText()); Onde “p” é um objeto criado de uma classe Model que contém o “cpf” do tipo inteiro

“t7” é o campo TextField do cpf,

meu código de conecção MySQL:

public boolean cadastrarPessoa(Pessoa novaPessoa){
		try {
		 Connection connection = GerenciadorBanco.getConexaoMySQL();
		 Statement comando;
		 comando = connection.createStatement();
		 String sql = "insert into  pessoa (cpf)   VALUES ('"+ novaPessoa.cpf+"' )";
		System.out.println(sql);	
		 boolean resultado = comando.execute(sql);
		 return resultado;
		 
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			GerenciadorBanco.FecharConexao();
		}
		
		return true;
	}

Desculpem a pergunta, pois sou iniciante em java e só estou ultilizando acesso ao banco a pouco tempo!

Pode ocorrer problema devido ao fato que um CPF [telefone removido] excede o limite do tipo int.

Utilize long nesses casos não deve dar problema.

Gleidson_Henrique

Outra coisa também é caso a pessoa digita-se um apóstrofo. Isso iria 'cortar' seu insert e iria dar erro.

O que você pode fazer é limitar que o campo somente receberá números através do Document.

Sobre o tamanho, também poderia limitar para não acontecer de o usuário digitar campos a mais do necessário.

Outra diga é que esta usando insert diretamente... Utilize PreparedStatement. Isso auxilia-o a não precisar ficar fazendo como fez:

String sql = "insert into  pessoa (cpf)   VALUES ('"+ novaPessoa.cpf+"' )"; 

String sql = "insert into  pessoa (cpf)   VALUES (?)";  //ficaria assim com PreparedStatement

Dessa maneira, fica mais fácil a manutenção do seu código e até a velocidade com que fará suas inserções...

Uma classe que pode lhe auxiliar é a seguinte:

package Utilitarios;

import java.sql.Connection;
import java.sql.SQLException;
import com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.Annotations;
import com.thoughtworks.xstream.io.xml.DomDriver;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.text.SimpleDateFormat;
import java.sql.Date;
import java.sql.Types;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import Modulo_NotaFiscal.xstream.config;

public class Conexao{
    
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static String DATABASE_URL = "";
    Connection connection = null; // gerencia a conexão
    PreparedStatement pstmt = null;
    public ResultSet resultset;
    config config = new config();
    
    
    public void conectar(){
        XStream xstream = new XStream(new DomDriver());
        xstream.alias("technology", config.class);
        try {

                config =  (config) xstream.fromXML(new FileInputStream(new File("config.xml")));

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

        try {
            DATABASE_URL = "jdbc:mysql://" + config.getHost() + "/" + config.getBanco() + "";

            Class.forName(JDBC_DRIVER);

            //String xml = (String) xstream.fromXML("D:\\NetBeansProjects\\Retaguarda\\config.xml");
            //config =  (config) xstream.fromXML(xml);

            
            // estabelece conexão com o banco de dados
            connection = DriverManager.getConnection( DATABASE_URL, config.getLogin(), config.getSenha() );
            
        } catch (ClassNotFoundException ex) { 
            ex.printStackTrace();
        } catch (SQLException ex) { 
            ex.printStackTrace();
        }
    }
    
    public void desconectar(){
        try                                                        
         {                                                          
            //statement.close();                                      
            connection.close();                                     
         }
         catch ( Exception exception )                              
         {                                                          
            exception.printStackTrace();
         }
    }
    
    public void update(String sql){
        try {
            // cria Statement para consultar banco de dados
            pstmt = connection.prepareStatement(sql);
            //pstmt.setString(1, "Teste");
            pstmt.executeUpdate();
            
            
        } catch (SQLException ex) {  
            ex.printStackTrace();
        }
    }
    
    public void select(String sql){
        try {
            // cria Statement para consultar banco de dados
            
            pstmt = connection.prepareStatement(sql);
            resultset = pstmt.executeQuery();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        
    }
    
    public byte insert(String sql, Object dados[]){
        try {
            // cria Statement para consultar banco de dados
            pstmt = connection.prepareStatement(sql);
            
            for(int i = 0; i < dados.length; i++){
                if(dados[i] instanceof Integer){
                    pstmt.setInt(i+1, Integer.parseInt(String.valueOf(dados[i])));
                } else if(dados[i] instanceof String)
                {
                    pstmt.setString(i+1, (String) dados[i]);
                } else if(dados[i] instanceof Date){
                    pstmt.setDate(i+1, (java.sql.Date)dados[i]);
                } else if(dados[i] instanceof Float){
                    pstmt.setFloat(i+1, Float.parseFloat(String.valueOf(dados[i])));
                } else if(dados[i] == null){
                    pstmt.setNull(i+1, Types.DATE);
                }
            }
            pstmt.executeUpdate();
            return 1;
        } catch (MySQLIntegrityConstraintViolationException ex) {  
            //Nesse caso, o item ja existe
            return 2;
        } catch (SQLException e){
            JOptionPane.showMessageDialog(null, "Algum erro inesperado ocorreu!");
            Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE, null, e);
            return 3;
        }
    }
    
    public void delete(String sql){
        try {
            pstmt = connection.prepareStatement(sql);
            int deletados = pstmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Nesse caso estou usando um XML para puxar algumas informações. Portanto, troque tais linhas para o correto da conexao do JDBC.

Abraços

Criado 10 de outubro de 2012
Ultima resposta 11 de out. de 2012
Respostas 2
Participantes 3