Dúvida em uma sentença SQL para acesso a banco MySQL

8 respostas
J
Pessoal, esse fim de semana me deparei com uma sentença SQL em um arquivo servlet que  dando pau.

É a seguinte:

String query = insert into cadastro(password,tipocliente,cpfcnpj,nomerazao,endereco,bairro,cidade,estado,telefone,fax,login) values(+password+","+tipocliente+","+cpfcnpj+","+nomerazao+","+endereco+","+bairro+","+cidade+","+estado+","+telefone+","+fax+","+login+")";

Alguem consegui indetificar algo errado nela?

Obs: as variaveis estão declaradas

private String password, cpfcnpj, nomerazao, endereco, bairro, cidade = null;

private String telefone, fax, login, tipocliente = null;

private String estado = MG;

e o acesso ao banco está funcionando corretamente, sei disso pq eu verifiquei atraves da sentença

String query = insert into cadastro(password,tipocliente,cpfcnpj,nomerazao,endereco,bairro,cidade,estado,telefone,fax,login) values(1,2,3,4,5,6,7,8,9,10,11);

e os numeros foram inseridos com sucesso.

Se alguem puder me ajudar obrigado pois quebrei muita cabeça com isso.

Júnior

8 Respostas

T
String query = "insert into cadastro(password,tipocliente,cpfcnpj,nomerazao,endereco,bairro,cidade,estado,telefone,fax,login) values("+password+","+tipocliente+","+cpfcnpj+","+nomerazao+","+endereco+","+bairro+","+cidade+","+estado+","+telefone+","+fax+","+login+")";

Experimente mostrar essa string SQL em algum lugar e veja porque ela está errada (dica: está faltando um monte de aspas ’ )

J

Cara, já coloquei ela no SQLyog e não consegui identificar erro, apenas a palavra password ficou vermelha, ela seria algum palavra reservada de SQL?

Mas com a frase String query = “insert into cadastro(password,tipocliente,cpfcnpj,nomerazao,endereco,bairro,cidade,estado,telefone,fax,login) values(1,2,3,4,5,6,7,8,9,10,11)”;
funcionou normalmente…
Dúvida… na string SQL deve ser com ’ (aspas simples) ou " (aspas duplas)?
Pois tô usando as duplas.

boaglio

JuniorNSMG:

Dúvida… na string SQL deve ser com ’ (aspas simples) ou " (aspas duplas)?
Pois tô usando as duplas.

Aspas simples.

Troque isso:

values("+password+",

por isso:

values('"+password+"',
J

Blz tentarei isso hj a noite e amanhã posto aqui se funcionou ou não.

Pedrosa

Use PreparedStatement não se preocupe com as aspas e nem os tipos de parametros.

values(?,?,?)
stmt.setString(1,password);
stmt.setInt(2,xx);
stmt.setString(3,xx);
J

Pedrosa, não consegui entender, poderia me dar um exemplo completo, considerando que meu banco de dados tem uma tabela cadastro e as seguintes colunas: password,tipocliente,cpfcnpj,nomerazao,endereco,bairro,cidade,estado,telefone,fax,login
Obrigado pela atençao

Pedrosa

Vamos lah a um exemplo completo:

public void insertChamado(ChamadoForm chamado) throws SQLException {

		System.out.println("Entrou no Incluir Chamado");

		String sql = "exec PR_INS_CHAMADOTECNICO ?,?,?,?,?,?,?,?,?,?,?";

		PreparedStatement stmt = this.connection.prepareStatement(sql);

		stmt.setString(1, chamado.getSolicitante().trim());
		stmt.setInt(2, chamado.getEmpresaSolicitante());
		stmt.setInt(3, chamado.getEmpresaAtendente());
		stmt.setString(4, chamado.getAtendente().trim());
		stmt.setString(5, chamado.getOcorrencia().trim());
		stmt.setString(6, chamado.getProduto().trim());
		stmt.setString(7, chamado.getPa().trim());
		stmt.setString(8, chamado.getImpacto().trim());
		stmt.setString(9, chamado.getPrioridade().trim());
		stmt.setString(10, chamado.getStatus().trim());
		stmt.setInt(11, chamado.getUsuario());

		stmt.execute();

		System.out.println("Executou procedure de inclusao");

		stmt.close();

	}

As interregações equivalem aos parametros, e esse número e a ordem, o driver vai trabalhar por vc.

J

Ok, farei ambas tentativas e verificarei qual funciona.

Criado 27 de março de 2006
Ultima resposta 27 de mar. de 2006
Respostas 8
Participantes 4