S.o.s

8 respostas
S

Pessoal,

Eu sei que é meio chato, mas eu to progredindo, ja tenho uma aplicação com um main 2 classes (pai e filha copiadas do nosso amigo moderador e tb consegui colocar um form pra aparecer quando eu compilo :cool: ), entao, so que eu acabei de pegar no setor de apostilas aqui um exemplo de conexao com o db. mas so tenho uma duvida cruel: como eu coloco a classe JdbcConnection para ser identificada no main?

por exemplo: set procedure to JdbcConnection
ou do JdbcConnection

sei la, alguma coisa do tipo, so preciso que ela inicie, ela ta soltinha no projeto!

Me ajudem por favor!

Valeu!!! :razz:

8 Respostas

C

Na minha opinião antes de tu começar a fazer uma con com o bd, seria interessante você entender como funciona a estrutura de uma aplicação java, ai sim quanto tiver entendido e feito uma GUI com seus própios código, com um simples tutorial tu conseguirá conectar no BD. OK ?

S

Entendi o seu ponto Cassolato, concondo plenamente que ainda nem sei o que eu to tentando fazer em java, mas eu ja programo ha 8 anos em outra linguagem e estou tentando, me matar pra conseguir me atualizar para o java. conexao de db pra mim e mole, conheco muita coisa de sql server, por isso tava tentando fazer essa graça. a GUI que voce fala eu posso entender como o projeto em si? De qq maneira, se vc puder ignorar a minha ignorancia e me responder como eu faço pra colocar essa titica dessa classe no main eu ficarei muito agradecido.

Agradeço novamente pela dica, obrigado!

H

E ae amigo!!!
A GUI é a interface visual do seu programa. As Janelas, forms, botões, tabelas, etc...

Pra te ajudar, vou inserir três codigos, um cria uma tabela no Access, outro insere e outro consulta. A partir desses códigos você pode entender como funciona e gerar o seu. Lembrando que existem outras maneiras de se fazer isso...

Código para criar:
import java.sql.*;
import java.io.*;

public class CriaTabelaDadosUsandoMAccess
{
    public static void main(String[] args) throws SQLException, IOException
    {
        System.out.println("Carregando o driver JDBC ODBC...");
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
        catch(ClassNotFoundException Erro)
        {
            System.out.println("Não e possivel carregar o driver...");
            Erro.printStackTrace();
            return;
        }

        System.out.println("Conectando-se à Base de Dados");
        Connection Conexao = DriverManager.getConnection("jdbc:odbc:BancoDadosExemplo","","");
        Statement FluxoSQL = Conexao.createStatement();
        String InstrucaoSQL = "CREATE TABLE Usuario (NomeUsuario CHAR(35), IDusuario INT, PreferenciaUsuario INT)";
        FluxoSQL.executeUpdate(InstrucaoSQL);
        System.out.println("Instrução SQL executada com sucesso...");
        FluxoSQL.close();
        Conexao.close();
    }
}
Código para inserir:
import java.sql.*;
import java.io.*;

public class InsereTabelaDadosUsandoMAccess
{
	static int IDUsuario, PreferenciaUsuario;
	static String NomeUsuario;

    public static void main(String[] args) throws SQLException, IOException
    {
        System.out.println("Carregando o driver JDBC ODBC...");
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
        catch(ClassNotFoundException Erro)
        {
            System.out.println("Não e possivel carregar o driver...");
            Erro.printStackTrace();
            return;
        }

        System.out.println("Conectando-se à Base de Dados");
        Connection Conexao = DriverManager.getConnection("jdbc:odbc:BancoDadosExemplo","","");
        Statement FluxoSQL = Conexao.createStatement();

        IDUsuario = 1; NomeUsuario = "Jose da Silva"; PreferenciaUsuario = 3;

        String InstrucaoSQL = "INSERT INTO Usuario VALUES ('" + NomeUsuario + "'," + Integer.toString(IDUsuario) + "," + Integer.toString(PreferenciaUsuario) + ")";
        FluxoSQL.executeUpdate(InstrucaoSQL);
        System.out.println("Instrução SQL executada com sucesso...");
        FluxoSQL.close();
        Conexao.close();
    }
}

E para consultar:

import java.sql.*;
import java.io.*;

public class ConsultaTabelaDadosUsandoMAccess
{
	static int IDUsuario, PreferenciaUsuario;
	static String NomeUsuario;

    public static void main(String[] args) throws SQLException, IOException
    {
        System.out.println("Carregando o driver JDBC ODBC...");
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
        catch(ClassNotFoundException Erro)
        {
            System.out.println("Não e possivel carregar o driver...");
            Erro.printStackTrace();
            return;
        }

        System.out.println("Conectando-se à Base de Dados");
        Connection Conexao = DriverManager.getConnection("jdbc:odbc:BancoDadosExemplo","","");
        Statement FluxoSQL = Conexao.createStatement();


        Statement InstrucaoSelectSQL = Conexao.createStatement();
		ResultSet Resultados = InstrucaoSelectSQL.executeQuery("SELECT NomeUsuario, IDUsuario, PreferenciaUsuario FROM Usuario");

		// Testa so resultados encontrados
		while(Resultados.next())
		{
		  String NomeUsuario = Resultados.getString(1).trim();
		  int IDUsuario = Resultados.getInt(2);
		  int PreferenciaUsuario = Resultados.getInt(3);

		  System.out.println("Nome do Usuario = " + NomeUsuario);
		  System.out.println("ID do Usuario = " + IDUsuario);
		  System.out.println("Preferencia do Usuario = " + PreferenciaUsuario);
		}

		System.out.println("\n\nInstrução SQL executada com sucesso...");
        InstrucaoSelectSQL.close();
        Conexao.close();
    }
}

Abraço!!

S

Muito obrigado pela gentileza

S

Me ocorreu uma duvida agora,

quando utiliza-se o comando import algumacoisa.*, pode-se escolher dentro de alguma coisa somente o que vai ser utilizado para melhorar a performance ou da no mesmo colocar o *?

No demais, voltando ao problema inicial, 8O como eu faço pra colocar essas conexões do banco no main pra ele conectar? alem das heranças? eu pretendo coloca-las dentro da classe pai e chamar uma conexão padrao somente com uma linha de comando com variaveis parametrizadas.

Vlw galega!!!

P

em termos de performance da no mesmo utilizar o import *, pq soh eh importado realmente o q vai ser utilizado, mas eu nao gosto muito disso nao…na etapa de aprendizado, eh legal vc saber exatamente o q esta importando, e depois de algum experiencia, com a facilidade do uso das IDEs, elas fazem os imports pra vc…

Mas assim como o Cassolato disse, tb acredito que seria bem mais interessante pra vc, entender melhor a estrutura de uma aplicação Java, e mais, entender Orientação a Objetos, isso eh fundamental, vc disse q eh desenvolvedor ha 8 anos, provavelmente de alguma linguagem estruturada ou orientada a eventos…então, talvez a dificuldade de entender OOP e o proprio Java, seja maior do q pra alguem q nunca programou…estude um pouco mais, pois assim na hora q vc tentar utilizar a classe JdbcConection q vc pegou na apostila, vai saber q vc precisa de uma instância dessa classe, vc tem q pegar a instancia atual, caso o Design Pattern Singleton esteja sendo utilizado (muito comum para a conexão com o DB), ou então criar uma nova instancia da classe, o q para seus testes provavelmente nao tera muito problema, mas numa aplicação real, o Singleton eh fundamental…

para criar uma nova instancia:

JdbcConection conn = new JdbcConection();

agora se o Singleton foi utilizado, provavelmente existe um método estatico getInstance() na sua classe JdbcConection, nesse caso vc faria assim:

JdbcConection conn = JdbcConection.getInstance();

a partir dos dois casos, vc vai acessar os métodos da classe JdbcConection…aih começa a brincar, eu sei q o começo eh bem chato e parece q a gente nao ta indo pra lugar nenhum…pra alguem q veio de VB, por exemplo, q com alguns cliques vc tem uma bela tela com um formulario, começar o Java eh bem penoso…

não sei se ja estou passando muita informação, mas isso eh soh uma pequena ponta do iceberg q vc tera pela frente caso opte por realmente seguir no mundo Java…

[/code]

S

Pedro,

Valeu mesmo pela ajuda irmão! Ae, eu programo em foxpro 2.6 passando ate o visual fox pro9 (que trabalho hj) o fox esta deixando de existir. Vai passar a se chamar Sedna e fazer parte do .net assim como o vb provavelmente.

Entao o mercado esta convergindo para java ou .net. Ja me convenci que o java e muito superior e flexivel, pois “so” precisa ter o conhecimento, as plataformas e ate o sistema operacional que estou curioso mais nao tive o prazer de conhecer (Solaris) são muito boas. Acho que nao consigo achar o eclipse melhor do que o netbeans de jeito nenhum porque deve requerer um pouco mais de conhecimento.

Mas nao perdi a fe. O pouco que eu tenho ja coloquei um atalho do meu principal.jar no desktop e fiquei feliz da vida com meu inputbox copiado daqui. (realmente estou me superando).

Quero agradecer a ajuda do Cassolato e tb por sua preocupação com os novatos deste forum.

Vou perturbar muito vcs ainda.

Vlw galera!!!

H

E ae amigo!!
Esqueci de te falar uma coisa… No windows, você vai ter criar o banco no access e acertar o caminho dele no fonte de dados Odbc.

É o seguinte:

Vá em Painel de Controle – Ferramentas Administrativas – Fonte de Dados ODBC.

Na aba Fonte de Dados do Usuário -> Adicionar ->Selecione o Drive do Banco de Dados (Nesse exemplo, selecione o Microsoft Access Driver) -> Concluir.

Vai aparecer uma telinha pra configurar o ODBC para o banco selecionado. Faça:
Selecionar ->Mostre o diretório onde está o seu BD
No campo “Nome da Fonte de Dados do Sistema” , você deve colocar o nome pelo qual o seu programa vai acessar esse Banco. Nestes exemplos o nome deve ser “BancoDadosExemplo”. Dê um OK e aplique as alterações.

Note que no código eu utilizo o nome para poder acessar o banco…isso ocorre na seguinte linha:

Connection Conexao = DriverManager.getConnection("jdbc:odbc:BancoDadosExemplo","","");

Mas é isso aí… No começo orientação a objeto é meio complicado mesmo, demora pra gente pegar o sentido da coisa. Qualquer dúvida é só postar aqui no fórum. O pessoal está sempre pronto pra ajudar.
Abraço!

Criado 5 de fevereiro de 2007
Ultima resposta 6 de fev. de 2007
Respostas 8
Participantes 4