Qual é o erro de sintaxe mysql/jdbc nesse código? [RESOLVIDO]

Olá pessoal,

Tenho um trecho do meu sistema em que gera uma exceção de sintaxe, mas nao descobri qual o erro. Alguém pode me ajudar?

Exceção:
[color=red]com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘20,concluido = 1,recursosLab = ‘8 chips de jskfd, 4 computadores, asfdf’,dataini’ at line 1[/color]

		try{
			conexao = ConexaoSQL.getCon();
			conexao.setAutoCommit(false);
			statement = conexao.prepareStatement(String.format("UPDATE projeto SET nome = '%s'," +
					"descricao = '%s',totHorTrab = %f,concluido = %d,recursosLab = '%s'," +
					"dataini = '%s',datafim = '%s' WHERE id_projeto = %d",obj.getNome(),
					obj.getDescricao(), obj.getTotalHoras(),concluido,
					obj.getRecursos(),obj.getDataini(),obj.getDatafim(), obj.getId()));
			statement.executeUpdate();
			return true;
		}
		catch(Exception ex){
			ex.printStackTrace();
			try {
				conexao.rollback();
			} catch (SQLException e) {
				JOptionPane.showMessageDialog(null,"Erro ao descartar dados do banco de dados!");
			}
			JOptionPane.showMessageDialog(null,"Erro na conexão com o banco de dados!");
			return false;
		}
		finally{
			try{
				conexao.setAutoCommit(true);
				statement.close();
				conexao.close();
			}
			catch(Exception ex){
				JOptionPane.showMessageDialog(null,"Erro ao fechar conexão com o banco de dados!");
			}
		}

O uso correto de prepareStatement seria isso:

statement = conexao.prepareStatement( "UPDATE projeto SET nome = ?, descricao = ?, totHorTrab = ?, concluido = ?, recursosLab = ?, dataini = ? ,datafim = ? WHERE id_projeto = ?"); statement.setString(1, obj.getNome()); statement.setString(2, obj.getDescricao()); ... prossiga chamando o método set de acordo com o tipo de dado do campo statement.executeUpdate();

[quote=ADEMILTON]O uso correto de prepareStatement seria isso:

statement = conexao.prepareStatement( "UPDATE projeto SET nome = ?, descricao = ?, totHorTrab = ?, concluido = ?, recursosLab = ?, dataini = ? ,datafim = ? WHERE id_projeto = ?"); statement.setString(1, obj.getNome()); statement.setString(2, obj.getDescricao()); ... prossiga chamando o método set de acordo com o tipo de dado do campo statement.executeUpdate(); [/quote]

Usei assim e deu certo! Valew