Executar comando do compilador (JAVA) no banco de dados(SQL)
19 respostas
guisantogui
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!
Sugiro que leia a apostila FJ-21 da Caelum, onde isso é tratado detalhadamente.
guisantogui
Obrigado, já tenho a apostila baixada, mas não sabia que podia encontrar isso lá, se alguem tiver mais dicas, explicações ou materias podem postar!
guisantogui
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!
J
jrtl6
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! :)
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.
guisantogui
tentei cirar uma tabela com a seguinte linha de código:
ele compila e roda bonmitinho, mas se eu olhar no banco nada é criado!
Alguém sabe me dizer o que está havendo?
Vlw!!
M
marcobiscaro2112
Você precisa executar o comando:
prepstm.execute();
Além disso, a sintaxe do comando SQL está errada.
guisantogui
poderia me mostrar a sintaxe correta ou me indicar um link, apostila, site?
vlw!
guisantogui
Alguem poderia me dizer como mando um comando por exemplo para criar uma tabela em SQL através do algoritimo de JAVA?
:roll:
M
marcobiscaro2112
"CREATE TABLE [IF NOT EXISTS] nomeDaTable ( campo1 TIPO [TAMANHO] [NOT] NULL [, campo2 TIPO [TAMANHO] [NOT] NULL [, ...]] PRIMARY KEY (campo))"
Na prática, um exemplo:
"CREATE TABLE contatos (id INT NOT NULL, nome VARCHAR(20), endereco VARCHAR(50), PRIMARY KEY(id))"
guisantogui
vou tentar utilizar algo parecido, se puder explicar o exemplo agradeço, realmente mto!
guisantogui
Consegui criar, muito obrigado marco!
guisantogui
Mais uma duvida como insiro dados nessa tabela, no caso as linhas?
alguém saberia me responder?
Obrigado pessoal!
mario.fts
vc realmente leu a apostila? tipo, capitulo 2.9, página 14, “Inserindo dados no banco”.
guisantogui
li sim, mas não consegui entender como funciona a sintaxe!
mario.fts
Revisando o exmplo
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, "[email removido]"); //esse vai trocar a segunda ? por '[email removido]' 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.
[]'s
guisantogui
Olhe meu código:
publicclassConexao{publicvoidcriaConeccao(){StringtabelaContatos="CREATE TABLE Contatos ( Nome VARCHAR(20), Endereço VARCHAR(50))";Stringnome="Aldo";Stringendereco="Rua";StringinsereNaTabela="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");Connectioncon=null;con=(Connection)DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/postgres","postgres","admin");System.out.println("Conectado");PreparedStatementprepstm=null;// prepstm = con.prepareStatement(tabelaContatos);prepstm=con.prepareStatement(insereNaTabela);prepstm.execute();// Registrado o driver, vamos estabelecer uma conexão}catch(ClassNotFoundExceptionex){Logger.getLogger(Conexao.class.getName()).log(Level.SEVERE,null,ex);}catch(SQLExceptione){// se houve algum erro, uma exceção é gerada para informar o erroe.printStackTrace();//vejamos que erro foi gerado e quem o gerou}}}
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)