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