[dúvida] Inserir dados com campos nulos

Olá a todos.

Estou com problemas para inserir campos nulos.

Se eu deixar um campo vazio e clicar em cadastrar, mostra a excessão:

O parenteses de cor vermelha é onde deveria ter setado o campo nulo.

Como inserir se o campo dos tipos int e string, se eles não foram preenchidos?

Caso alguém precise ver o código, está aqui:

[code]<%
String sNome = request.getParameter(“nome”);
String sSobrenome = request.getParameter(“sobrenome”);
String sSexo = request.getParameter(“sexo”);
String sEndereco = request.getParameter(“endereco”);

int sTelefone;
try {
sTelefone = Integer.parseInt(request.getParameter(“telefone”));
} catch (NumberFormatException nfex) {
out.println("Tipo de dados inválido para telefone: " + nfex.toString());
return;
}

int sCPF ;
try {
sCPF = Integer.parseInt(request.getParameter(“CPF”));
} catch (NumberFormatException nfex) {
out.println("Tipo de dados inválido para CPF: " + nfex.toString());
return;
}

String sCNPJ = request.getParameter(“CNPJ”);

String sLogin = request.getParameter(“login”);
String sSenha = request.getParameter(“senha”);
%>

<%
Connection con = null;
Statement stmt = null;

try {
Class.forName(“org.gjt.mm.mysql.Driver”);

  String url="jdbc:mysql://localhost:3306/rest_web";
  String user="root";
  String pass="2017";
  
 con = DriverManager.getConnection(url, user, pass);
 stmt = con.createStatement();
  
  stmt.executeUpdate("INSERT INTO administrador (nome, sobrenome, sexo, "+
          "endereco, telefone, cpf, cnpj, login, senha VALUES('" +sNome+ "', '" +
             sSobrenome+"', '" +sSexo+ "', '" +sEndereco+ "', " +sTelefone+ ", " +
             sCPF+ ", '" +sCNPJ+ "', '" +sLogin+ "', '" +sSenha+ "'");
   
  %>

<%
response.sendRedirect(“cadastro_clientes.jsp”);

          } catch (ClassNotFoundException cnfex) {
              out.println("Driver não encontrado<br>Erro: " +cnfex.toString());
              } catch (SQLException sqlex) {
                  out.println("Erro ao cadastrar cliente:<br>" +sqlex.toString());
                  }

%>[/code]

Obrigado.

tente:

String sCNPJ = request.getParameter("CNPJ") == null : "null" ? request.getParameter("CNPJ");

ou

" ...," + (sCNPJ == null : "null" ? sCNPJ) + ", "

Mas retire as aspas do insert e as coloque na variavel,

   1. String sCNPJ = request.getParameter("CNPJ") == null : "null" ? ("'" + request.getParameter("CNPJ") +"'");  

Use PreparedStatement

e faça o binding entre os valores dos valores como a seguir

stmt.setString(indice, valor);

[quote=cdorner]Use PreparedStatement

e faça o binding entre os valores dos valores como a seguir

stmt.setString(indice, valor);[/quote]

Não entendi o que disse.
Depois lerei a respeito sobre binding.

@ Pablo_Eteg
@ wbdsjunior

Não entendi direito como usar o exemplo que vocês passaram.

O que estou procurando é uma maneira de setar os campos tanto como inteiros, float, etc, quando string.
Daí se algum não for obrigatório(independente de ser inteiro ou string) eu gostaria de adicionar ao banco com sucesso.

Obrigado pela ajuda.