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!

Obrigado pela ajuda gurizada! :smiley:

19 Respostas

M

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! :smiley:

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! :slight_smile:

J

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.

[]'s

J

Segue o link do artigo

http://www.guj.com.br/article.show.logic?id=115

[]'s

M

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:

PreparedStatement prepstm = con.prepareStatement("CREAT TABLE");

ele compila e roda bonmitinho, mas se eu olhar no banco nada é criado!
Alguém sabe me dizer o que está havendo?

Vlw!!

M

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
"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! :wink:

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:

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
        }
    }
}

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)
guisantogui

Alguém mais tem algumas dicas?

Obg!

Criado 25 de fevereiro de 2010
Ultima resposta 1 de mar. de 2010
Respostas 19
Participantes 4