a) Não se importa nada do pacote com.mysql.jdbc, ou qualquer pacote dentro dele;
b) Deve se colocar métodos como close() em finallys, ou usar o recurso de try with resources (Java 7);
c) Você deveria criar um PreparedStatement, e não um Statement.
d) Você também deve fechar o statement.
Correções:
packagebr.com.caelum.jdbc;importjava.sql.SQLException;importjava.util.Calendar;importbr.com.caelum.jdbc.dao.ContatoDAO;//Pacotes certosimportjava.sql.Connection;importjava.sql.Statement;publicclassJDBCInsereextendsContatoDAO{publicstaticvoidmain(String[]args)throwsSQLException{Stringsql="INSERT INTO contatos (nome,email,endereco,dataNascimento) VALUES (?,?,?,?)";//Try with resources (Java 7)try(Connectioncon=newConnectionFactory().getConnection(),Statementstmt=con.prepareStatement(sql)){// preenche os valoresstmt.setString(1,"Caelum");stmt.setString(2,"[email removido]");stmt.setString(3,"R. Vergueiro 3185 cj57");stmt.setDate(4,newjava.sql.Date(Calendar.getInstance().getTimeInMillis()));// executastmt.executeUpdate();System.out.println("Gravado!");}catch(SqlExceptione){System.out.println("Problemas ao gravar");e.printStackTrace();}}
thitkd
nesse código:
Class.forName("com.mysql.jdbc.Driver");
Ele informa “ClassNotFoundException tipo de exceção não tratada”
Na linha do “try” ele informa:
Multiple markers at this line
- Syntax error on token “Connection”, ( expected after
this token
- Syntax error on token “try”, throw expected
na linha do statement ele informa:
Multiple markers at this line
- Syntax error, insert “)” to complete
Expression
- Syntax error, insert “;” to complete
ThrowStatement
- Statement cannot be resolved to a variable
- Syntax error on token “stmt”, delete this
token
na linha:
catch (SqlException e) {
System.out.println("Problemas ao gravar");
e.printStackTrace();
}
ele informa:
Multiple markers at this line
- Syntax error on token “catch”, for expected
- Syntax error, insert “; ; ) Statement” to complete
ForStatement
- SqlException cannot be resolved to a type
ViniGodoy
Então os problemas são que:
a) Você não está usando o Java 7 (note que eu afirmei explicitamente que esse try era do Java 7);
b) Você não associou o driver do JDBC do mysql ao seu projeto. Você deve baixa-lo no site do MySql e adiciona-lo como dependência.
O código em Java 6 seria assim:
packagebr.com.caelum.jdbc;importjava.sql.SQLException;importjava.util.Calendar;importbr.com.caelum.jdbc.dao.ContatoDAO;//Pacotes certosimportjava.sql.Connection;importjava.sql.Statement;publicclassJDBCInsereextendsContatoDAO{publicstaticvoidmain(String[]args)throwsSQLException{Stringsql="INSERT INTO contatos (nome,email,endereco,dataNascimento) VALUES (?,?,?,?)";//Try catch e finally (Java 6 e anterior)Connectioncon=null;Statementstmt=null;try{con=newConnectionFactory().getConnection();stmt=con.prepareStatement(sql);// preenche os valoresstmt.setString(1,"Caelum");stmt.setString(2,"[email removido]");stmt.setString(3,"R. Vergueiro 3185 cj57");stmt.setDate(4,newjava.sql.Date(Calendar.getInstance().getTimeInMillis()));// executastmt.executeUpdate();System.out.println("Gravado!");}catch(SqlExceptione){System.out.println("Problemas ao gravar");e.printStackTrace();}finally{if(stmt!=null)try{stmt.close();}catch(Exceptione){}if(con!=null)try{con.close();}catch(Exceptione){}}}
Certifique-se também de ter um banco de dados com a tabela contatos criada.