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

Pessoal, esse fim de semana me deparei com uma sentença SQL em um arquivo servlet que tá 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

 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 ’ )

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.

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

Aspas simples.

Troque isso:

values("+password+",

por isso:

values('"+password+"',

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

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);

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

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.

Ok, farei ambas tentativas e verificarei qual funciona.