Conexão com banco de dados

Ola turma, estou aprendendo agora a usar java para fazer conexao com banco de dados usando JDBC. Estou tentando criar uma tabela de teste dentro do banco de dados que chamei omics. Tentei primeiro utilizar um “executeQuery()” porém ele acusou erro. Agora estou tentando usar um “executeUpdate()” que ouvi falar que é o adequado para utilizar comandos create. Porém, este comando não funciona também. Então, tenho duas dúvidas. Para utilizar comandos Sql no java, preciso colocar os ponto e vírgula? E porque está dando erro no “executeUpdate()”? Valew ae! Muito obrigado!! :smiley:

Segue abaixo o código:


package acessobancodados;

import java.sql.*;


public class Main {

 
    public static void main(String[] args) {
        
        //Atributos para conexão com o banco
        String URL = "jdbc:mysql://localhost/omics";
        String user = "root";
        String password = "";
        
        //Atributos de comando
        String comando = "DROP TABLE IF EXISTS `teste`;" + "CREATE TABLE `teste`"
                + "(`id` int(10) unsigned NOT NULL auto_increment,`name` varchar(100) NOT NULL,"
                +"PRIMARY KEY  (`id`))ENGINE=MyISAM AUTO_INCREMENT=56 DEFAULT CHARSET=latin1;";
            
        try{
            
           Class.forName("com.mysql.jdbc.Driver");
            
            Connection conexao = DriverManager.getConnection(URL,user,password); //Conecta-se ao banco de dados
            Statement statement = conexao.createStatement();
            
            ResultSet resultSet = statement.executeUpdate(comando);
                     
            statement.close();
           conexao.close();
            
        }//fim do try
        catch(Exception e){
        
            System.err.println(e.getMessage());
        }
        
         
        
    }//fim do método main
  

}// fim da classe main

E segue abaixo o erro no executeUpdate():

found : int
required: java.sql.ResultSet
ResultSet resultSet = statement.executeUpdate(comando);
1 error
BUILD FAILED (total time: 0 seconds)

Os comandos DROP TABLE e CREATE TABLE não são do tipo que retornam dados, eles modificam a estrutura do banco. Este comando executeUpdate acho que funciona sim com estes comandos mais na documentação do Java fala que serve pra Update, Insert e Delete… de qualquer forma o erro do seu código é que o resultado do executeUpdate tem de ser atribuido a um int

[quote=douglas_vidotto]Ola turma, estou aprendendo agora a usar java para fazer conexao com banco de dados usando JDBC. Estou tentando criar uma tabela de teste dentro do banco de dados que chamei omics. Tentei primeiro utilizar um “executeQuery()” porém ele acusou erro. Agora estou tentando usar um “executeUpdate()” que ouvi falar que é o adequado para utilizar comandos create. Porém, este comando não funciona também. Então, tenho duas dúvidas. Para utilizar comandos Sql no java, preciso colocar os ponto e vírgula? E porque está dando erro no “executeUpdate()”? Valew ae! Muito obrigado!! :smiley:

Segue abaixo o código:


package acessobancodados;

import java.sql.*;


public class Main {

 
    public static void main(String[] args) {
        
        //Atributos para conexão com o banco
        String URL = "jdbc:mysql://localhost/omics";
        String user = "root";
        String password = "";
        
        //Atributos de comando
        String comando = "DROP TABLE IF EXISTS `teste`;" + "CREATE TABLE `teste`"
                + "(`id` int(10) unsigned NOT NULL auto_increment,`name` varchar(100) NOT NULL,"
                +"PRIMARY KEY  (`id`))ENGINE=MyISAM AUTO_INCREMENT=56 DEFAULT CHARSET=latin1;";
            
        try{
            
           Class.forName("com.mysql.jdbc.Driver");
            
            Connection conexao = DriverManager.getConnection(URL,user,password); //Conecta-se ao banco de dados
            Statement statement = conexao.createStatement();
            
            ResultSet resultSet = statement.executeUpdate(comando);
                     
            statement.close();
           conexao.close();
            
        }//fim do try
        catch(Exception e){
        
            System.err.println(e.getMessage());
        }
        
         
        
    }//fim do método main
  

}// fim da classe main

E segue abaixo o erro no executeUpdate():

found : int
required: java.sql.ResultSet
ResultSet resultSet = statement.executeUpdate(comando);
1 error
BUILD FAILED (total time: 0 seconds)

[/quote]

Vc nao recupera um ResultSet neste caso, cola só

statement.execute(sql);

mas sem o resultSet

Muito Obrigado !!! 8) Funcionou agora!! Modifiquei oque vocês sugeriram e o código java funcionou. Só precisei ajeitar melhor depois o código SQL (tirei os ponto e virgula e uns outros comandos que nao estavam funcionando) e deu certo! Valew mesmo!!

Douglas,

No caso do executeUpdate, ele retorna a quantidade de registros afetados na tabela etc. Ele deve ser utilizado para insert´s, update e delete. O return deste metódo é um int.

No caso do executeQuery, ele retorna um objeto resultSet com os registros aplicados na table. Este cursor deve ser recebido para um outro objeto (Rs).

É importante sempre dar uma analisada no javadoc, vai te ajudar muito.

Eu também sou iniciante em java, o javadoc ajuda muitissimo.

Boa sorte.

Abs,