[quote=PaulH]Faço assim:
pstmt.setInt(1,checkIntegerSize(ds.getString("ID_REQ"),10));
pstmt.setObject(2,(checkStringSizeData(ds.getString("DATAVENDA").trim(),10)));
pstmt.setObject(3,(checkStringSizeData(ds.getString("DATACOMPRA").trim(),10)));
...resto do código, e fechar pstmt e conexão
meu insert final static String query= “INSERT INTO MANUTENCAO(ID_REQ,DATAVENDA,DATACOMPRA) VALUES (?,?,?)”;
esse DS é o parser que eu pego os dados do arquivo texto.[/quote]
ta bom… você ainda está passando como parâmetro uma string, o retorno do seu método checkStringSizeData (ironicamente não foi só o Rodrigo que não tinha visto que voc~e não o tinha postado…hehe )
mas você não alterou para fazer do jeito certo como eu te orientei, se você vai inserir uma data nessa coluna na bse de dados, use o tipo correto para datas, ficar usando strings para isso pode dar problema, eu fui dar uma pesquisada e o melhor dos exemplos que encontrei direto em um site foi esse. como não achei que fosse dos mais didáticos, apesar de não ser ruim, suponha uma tabela pessoa, com nome, idade e data de nascimento, o código ficaria algo ± assim:
import java.util.Date;
import java.sql.*;
public class SuaClasseQueEncapsulaOperacoesNoBancoDeDados {
public static void inserirPessoa(Pessoa pessoa) {
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
String url = "jdbc:mysql://<host, provavelmente no seu teste vai ser localhost>:<porta, <padrrao do mysql 3306>/";
String db = "database";
String driver = "com.mysql.jdbc.Driver";
String user = "usuario";
String pass = "senha";
try {
Class.forName(driver);
con = DriverManager.getConnection(url + db, user, pass);
con.setAutoCommit(false);
String sql = "insert into pessoa(nome, idade, nascimento) values(?,?,?) ";
pst = con.prepareStatement(sql);
pst.setString(1, pessoa.getNome());//nome é de tipo String
pst.setInt(2, pessoa.getIdade);//idade é do tipo int
pst.setDate(3, new java.sql.Date(pessoa.getIdade.getTime()));
//idade é de tipo java.util.Date, com ele você monta um java.sql.Date
//se você quiser gaurdar hora minuto segundo usa java.sql.Timestamp ao invés de java.sql.Date
int quantidadeLinhasAlteradas = pst.executeUpdate();
String mensagem = "seu teste alteru "+quantidadeLinhasAlteradas+" linhas";
System.out.println(mensagem);
//LOG.debug(mensagem);
con.commit();
} catch (Exception e) {
String mensagemErro = "ocorreu o seguinte erro ao inserir pessoa: "+e.getMessage();
System.out.println(mensagemErro);
e.printStackTrace();
//LOG.error(memnsagemErro, e);
con.rollback();
} finally {
if (rs != null)
rs.close();
if (pst != null)
pst.close();
if (con != null)
con.close();
}
}
}
também achei esse exemplo mas ele é horrível, é um código mais completo mas não da commit ou rollback, não fecha os recursos no lugar certo, pessoalmente achei talvez possa ter sido feito com boas intenções mas acaba por ser um desserviço a comunidade.
aconselho fortemente que você pegue alguma apostila de java que tenha algum capitulo de jdbc, as mais recomentadas são a da caelum, iniciativa jedi, veja se a K19 também não tem alguma de java básico, jse, acho que tem…