Pessoal as dúvidas não acabam, agora que consegui conectar o banco de dados no JAVA peciso fazer com que seja executado um código em JAVA e que ele crie as tabelas em SQL lá no banco de dados, alguem pode me indicar algum caminho, pois voltei a estaca inicial!
marco, você deve ter se confundido com os assuntos na FJ-21 tem muito sobre isso, mas trata de conexões com o banco e não inserção de dados através de comandos do compilador (JAVA)
mas obrigado!
Não sei se é o caso mas aki mesmo no GUJ tem um artigo que fala sobre “retirar SQL do código java”, por esse artigo ensina como usar arquivos .sql através do java.
marco, você deve ter se confundido com os assuntos na FJ-21 tem muito sobre isso, mas trata de conexões com o banco e não inserção de dados através de comandos do compilador (JAVA)
mas obrigado! :)[/quote]
Pois esse o caminho: você cria uma classe que será a fábrica de conexões, pega um nova conexão ao banco e executa um PreparedStatement cria que crie a tabela (por exemplo, um “CREATE TABLE IF NOT EXISTS…”. E para adiciona os dados, use também um PreparedStatement com o comando SQL adequado.
public class JDBCInsere {
public static void main(String[] args) throws SQLException {
// conectando
Connection con = new ConnectionFactory().getConnection(); //aqui abriu a conexão
// cria um preparedStatement
String sql = "insert into contatos (nome,email,endereco,dataNascimento) values (?,?,?,?)"; //esse é o comando SQL a ser executado. cada ? é um parametro.
PreparedStatement stmt = con.prepareStatement(sql); //aqui compila o comando
// preenche os valores
stmt.setString(1, "Caelum"); //esse comando vai trocar a primeira ? por 'Caelum' no comando SQL
stmt.setString(2, "contato@caelum.com.br"); //esse vai trocar a segunda ? por 'contato@caelum.com.br' no comando SQL
stmt.setString(3, "R. Vergueiro 3185 cj57"); //mesca coisa, 3º ?
stmt.setDate(4, new java.sql.Date(Calendar.getInstance().getTimeInMillis())); //Mesma coisa, 4ª ?. mas aqui ele seta uma data.
// executa
stmt.execute(); //esse cara executa o comando no banco de dados.
stmt.close(); //fecha o comando compilado
System.out.println("Gravado!");
con.close(); //fecha a conexão
}
}
posta ai o que vc não entendeu.
[code]public class Conexao
{
public void criaConeccao(){
String tabelaContatos = "CREATE TABLE Contatos ( Nome VARCHAR(20), Endereço VARCHAR(50))";
String nome = "Aldo";
String endereco = "Rua";
String insereNaTabela = "insert into Contatos (Nome, Endereço) values (Nome,Endereço)";
try //A captura de exceções SQLException em Java é obrigatória para usarmos JDBC.
{
Class.forName("org.postgresql.Driver");
System.out.println("Driver carregado");
Connection con = null;
con = (Connection) DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/postgres","postgres","admin");
System.out.println("Conectado");
PreparedStatement prepstm = null;
// prepstm = con.prepareStatement(tabelaContatos);
prepstm = con.prepareStatement(insereNaTabela);
prepstm.execute();
// Registrado o driver, vamos estabelecer uma conexão
}
catch (ClassNotFoundException ex)
{
Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE, null, ex);
}
catch(SQLException e)
{
// se houve algum erro, uma exceção é gerada para informar o erro
e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou
}
}
}[/code]
e o erro:
org.postgresql.util.PSQLException: ERROR: column "nome" does not exist
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:343)
at Conexao.criaConeccao(Conexao.java:27)
at Main.main(Main.java:6)