Problema p/ Gravar data no Firebird

4 respostas
G

Pessoal, criei um campo date no Firebird e estou tentando gravar um JTextField nele, mas não estou sabendo como, veja o trecho abaixo:

Statement stmt = conn.createStatement();
              ResultSet rs = stmt.executeQuery(cad001Select);
              ResultSetMetaData rsmd  = rs.getMetaData();
              int numCols = rsmd.getColumnCount();
              PreparedStatement pstmt = conn.prepareStatement(cad001Ins);
              int x=0;
              for(int i=1;i<=numCols;i++) {
                 switch (rsmd.getColumnType(i)) {
                    case Types.VARCHAR   : pstmt.setString(i,tf[x].getText()); break ;
                    case Types.CHAR      : pstmt.setString(i,tf[x].getText()); break ;
                    case Types.DATE      : pstmt.setDate(i,new SimpleDateFormat("dd/MM/yyyy").parse(tfAbert.getText())); break ;
                    case Types.FLOAT     : pstmt.setString(i,tf[x].getText()); break ;
                    case Types.DOUBLE    : pstmt.setString(i,tf[x].getText()); break ;
                 }
                 x++;
              }
              pstmt.executeUpdate();
              pstmt.close();
    	      conn.close();

olha o erro:

cannot find symbol

case Types.DATE      : pstmt.setDate(i,new SimpleDateFormat(dd/MM/yyyy).parse(tfAbert.getText())); break ;

location: interface java.sql.PreparedStatement

symbol  : method setDate(int,java.util.Date)

valew

4 Respostas

Ironlynx

ggero, vc tá querendo gravar um java.util.Date aonde é esperado um java.sql.Date. :wink:

G

Desculpe Iron eu não entendi… na verdade estou apanhando de datas… poderia me dar um pequeno trecho de código? mto obrigado.

Ironlynx

ggero,
Não lembro se no Firebird tem diferença mas no MySQL vc poderia fazer algo assim:

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); String s = "28/11/2008";//pode ser o getText() do seu textfield por exemplo Date data = format.parse(s);

no seu preparedStatement:
pstmt.setDate(i, new java.sql.Date(data.getTime()));

Minha dica: Faça o tratamento desses seus TextFields ANTES de passar para o banco.É uma dor de cabeça a menos se o usuário digitar uma letra ao invés de um número ou algo assim.

G

valeu mesmo… obrigado.

Criado 27 de novembro de 2008
Ultima resposta 4 de dez. de 2008
Respostas 4
Participantes 2