atualmente faço a inserção no banco de dados do mysql atraves de um metodo
assim
public void cadastra(String nome, String Senha) {
Statement stm = recuperaStm();//um outro metodo meu
String comando = "insert into usuarios (nome,senha) values ('"+ nome+ "','" + senha + "')";
// note que nao uso parametros
stm.executeupdate(comando);
}
=====================
Porem assim é mto ruim na hora em que tenho que converter datas entre outros
nao tem como fazer igual ao delphi
por exemplo :
query.close;
query.sql.clear;
query.sql.add('insert into usuarios (nome,senha) values ( :n, :s )'); // note que eu uso o :para o parametro
query.parameters.parambyname('n').value := nome ; //==> varialvel
query.parameters.parambyname('n').value := senha ; //==> varialvel
query.execSql;
nao tem como passar por parametros tambem no java ???
[code]private static final String INSERIR = “INSERT INTO USUARIOS (nome,senha) VALUES (?,?)”;
Connection con = ConnectionFactory.getConnection();
public void cadastra(String nome, String senha) throws SQLException{
PreparedStatement stmt = con.prepareStatement(INSERIR);
stmt.setString(1, nome); //Onde 1 é a primeira interrogação da String INSERIR
stmt.setString(2, senha); //e logicamente, 2 é a segunda..
stmt.execute();
}[/code]
Dá uma olhada aí no link que o pessoal mandou pra tirar qualquer dúvida…
Olá,
a utilização de concatenação de String, ao invés do PreparedStatement, para criar seus comandos sql é uma grave falha de segurança.
Utilizando-se concatenação de String vc sujeita a sua aplicação a um ataque com SQLInjection.
Para saber mais sobre SQLInjection e como o PreparedStatement o evita: [url]http://www.owasp.org/index.php/Preventing_SQL_Injection_in_Java[/url]
Existe também uma versão do PREPAREDSTATEMENT que recebe como parametro a String de SQL e um Array de Strings, funciona da mesma forma, mas evita o stmt.setString(1, nome); //Onde 1 é a primeira interrogação da String INSERIR
stmt.setString(2, senha); //e logicamente, 2 é a segunda..
ou é necessário fazer essa parte na mesma?