Noob em desenvolvimento com Banco de Dados

Ola pessoal tudo blz?! Primeiramente queria parabenizar à esse forum, que me ajudou bastante sempre com duvidas resolvidas tudo que até agora eu procurei, encontrei aqui.
Bem, mas vamos la, eu faço o segundo semestre de Analise e Desenvolvimento de Sistemas… E estava fazendo um programa para meu pai, que é uma biblioteca que cadastra Livros, CDs e LP’s…
O sistema ta pronto, fiz uma janela para cadastro, outra para consulta, na cadastro tem as opçoes de cadastro em caso de selecionar livro,cd ou lp, tem suas opçoes individuais, ela muda se mudar a opçao em um comboBox ( livro, cd e lp ). E salva em um list.
Na segunda tela, temos a JTable, com as opçoes tambem de livro,cd e lp pra consulta, e consultar por Titulo ou autor/cantor… No botao de busca ele procura e exibe e popula a JTable caso haja resutados, ta procurando beleza coloquei pra colocar de forma eficiente, bastando digitar o começo ou o meio/fim ele acha, tem botao de visualizar que ele mostra um relatorio e um de editar, que ele vai pra tela de editar ( que é a mesma de cadastro ) e “repatria” o conteudo do array na tela, para apenas ser modificado… ta funcionando mil e uma maravilhas, mas vamos ao ponto.
Eu não sei como fazer pra persistir os dados, minhas aulas de banco de dados foram apenas de modelagem não chegamos à ver nem linguagem SQL… sou um otimo modelador, mas não sei fazer uma consulta no banco ^_^x
Inclusive fiz toda a modelagem do banco, fiz a o levantamento de requisitos, e todas as etapas possiveis e que aprendi…
Devido à esse meu “défice” acho que tô meio que confundindo as coisas, tenho os dados no array, como fazer para “jogar” no banco?! qual banco uso MySQL ou SqlLite?! O que exatamente preciso para fazer esse processo?! Queria que o banco “fosse junto” com a aplicação para que meu cliente ( pai ) não precise instalar nada…
Se tiverem um exemplo simples que me mostrem, posso desenrolar o resto.

ps: usei netbeans nesse sistema.

Agradeço desde já, abraços

1 - Baixe e instale o SGBD MySQL
2 - Baixe e instale o GUI Administrator HeidiSQL
3 - Leia isto
4 - Pratique bastante
5 - Leia isto e siga o que ele diz.
A partir daí, é contigo. Neste primeiro momento, esqueça frameworks de persistência. Pense neles num segundo momento.

[quote=drsmachado]1 - Baixe e instale o SGBD MySQL
2 - Baixe e instale o GUI Administrator HeidiSQL
3 - Leia isto
4 - Pratique bastante
5 - Leia isto e siga o que ele diz.
A partir daí, é contigo. Neste primeiro momento, esqueça frameworks de persistência. Pense neles num segundo momento.[/quote]

Obrigado amigo, eu avancei um pouco… mas ta dando uma exceção aqui, a seguinte:

SEVERE: null
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (no such table: MeuBanco)

Eu to usando o sqlite pq eh um programa simples, e não quero instalação do banco no meu “cliente”… e o SQLite administrator, criei o esquema do banco la, e to usando assim pra fazer a conexão:

[code]private Connection conexao;
Statement statement;
ResultSet resultset;
PreparedStatement prep;

    public void conecta() throws Exception {  
        Class.forName("org.sqlite.JDBC");  
        conexao =  DriverManager.getConnection("jdbc:sqlite:MeuBanco.s3db");  
        statement = conexao.createStatement();  
        conexao.setAutoCommit(true);  
    }  
    
    //public void exec(String sql) throws Exception {  
      //  resultset = statement.executeQuery(sql);  
    //}
    
    public void inserir(Livro u){
    try {
        statement.execute("INSERT INTO `MeuBanco`.`Livro` (`Codigo`, `Titulo`, "
                + "`Autor`, `Genero`,`Volumes`,`Extras`,`Estante`,`Prateleira` ) "
                + "VALUES ('0', '"+u.getTitulo()+"', '"+u.getAutor()+"', "
                + "'"+u.getGenero()+"' , '"+u.getVolumes()+"' , '"+u.getExtras()+"', '"+u.getEstante()+"', '"+u.getPrateleira()+"')");
    } catch (SQLException ex) {
        Logger.getLogger(LivroDAO.class.getName()).log(Level.SEVERE, null, ex);
    }
    desconecta();
}

[/code]

É apenas um teste… e la na minha classe repositorio eu tenho o seguinte…

[code] public void efetuarCadastro(Livro l){
listaLivros.add(l); // adiciona no arraylist
LivroDAO lv = new LivroDAO(); /// testando
try {
lv.conecta();
lv.inserir(l);
} catch (Exception ex) {
Logger.getLogger(RepositorioManager.class.getName()).log(Level.SEVERE, null, ex);
}

    Collections.sort(listaLivros,l); // ordem alfabetica
    JOptionPane.showMessageDialog(null,l); // mostra mensagem do relatorio 
}[/code]

Vi alguma evolução ao menos, esses dias estudei bastante e deu pra clarear mais a mente, mas nao sei pq ta dando esse erro, se eu coloco soh conectar ele conecta e nao da erro, se eu tento inserir, acontece isso…

Cara, o que você teve de resultado ao traduzir

no such table ?
Nem tentou traduzir?

[quote=drsmachado]Cara, o que você teve de resultado ao traduzir

no such table ?
Nem tentou traduzir?
…[/quote]

sim sim, mas a tabela existe Uu
Eu entendi o erro que deu, soh nao entendi, pq deu ^_^x
O nome da banco eh “MeuBanco”, e soh tem 1 tabela por enquanto, que é justamente a “Livro”…

Essa resposta me dá duas conclusões:
1 - Você sequer traduziu o erro
2 - Você não sabe a diferença entre tabela e banco.
Note que o banco se chama ‘MeuBanco’ e não a tabela, que é a razão pela qual o erro está sendo informado.
Provavelmente você confundiu o nome da tabela com o do banco em algum lugar e isto está ocasionando o erro.

Esse é o famoso problema que ocorre quando você usa bancos de dados em que os dados estão em um arquivo.

Você sabe em que diretório deve ficar esse arquivo ( MeuBanco.s3db ) para que seu programa funcione?

Provavelmente, em vez de jdbc:sqlite:MeuBanco.s3db, você tenha de especificar o caminho completo (talvez algo como “jdbc:sqlite:C:/Users/Rodrigo/Desktop/MeuBanco.s3db” - note que:
a) Não use um diretório ou um nome de arquivo com espaços no meio, ou acentos, ou caracteres especiais… não deveria haver problemas, mas…;
b) Não use “” mas sim “/”, mesmo no Windows.

Veja mais em:

http://en.wikibooks.org/wiki/Java_JDBC_using_SQLite/Connecting

Outra coisa que me faz concluir que você não está prestando muita atenção no que está lendo nas referências, ou que não está tentando entender cada linha do que digitou:

            conexao.setAutoCommit(false);    
            conexao.setAutoCommit(true);  

Por que é que você está chamando a mesma coisa com “false” e “true”?

Dá a impressão que você não entendeu, e por via das dúvidas chama a mesma coisa com “false” e “true” - uma das coisas vai funcionar :slight_smile:

[quote=drsmachado]Essa resposta me dá duas conclusões:
1 - Você sequer traduziu o erro
2 - Você não sabe a diferença entre tabela e banco.
Note que o banco se chama ‘MeuBanco’ e não a tabela, que é a razão pela qual o erro está sendo informado.
Provavelmente você confundiu o nome da tabela com o do banco em algum lugar e isto está ocasionando o erro.[/quote]

Uhmn… eu jah tentei mudar pra apenas

e da mesmo erro… X_X

[quote=entanglement]Outra coisa que me faz concluir que você não está prestando muita atenção no que está lendo nas referências, ou que não está tentando entender cada linha do que digitou:

            conexao.setAutoCommit(false);    
            conexao.setAutoCommit(true);  

Por que é que você está chamando a mesma coisa com “false” e “true”?

Dá a impressão que você não entendeu, e por via das dúvidas chama a mesma coisa com “false” e “true” - uma das coisas vai funcionar :slight_smile:
[/quote]

Corrigi assim que postei ^^

[quote=entanglement]Esse é o famoso problema que ocorre quando você usa bancos de dados em que os dados estão em um arquivo.

Você sabe em que diretório deve ficar esse arquivo ( MeuBanco.s3db ) para que seu programa funcione?

Provavelmente, em vez de jdbc:sqlite:MeuBanco.s3db, você tenha de especificar o caminho completo (talvez algo como “jdbc:sqlite:C:/Users/Rodrigo/Desktop/MeuBanco.s3db” - note que:
a) Não use um diretório ou um nome de arquivo com espaços no meio;
b) Não use “” mas sim “/”, mesmo no Windows.

Veja mais em:

http://en.wikibooks.org/wiki/Java_JDBC_using_SQLite/Connecting[/quote]

Opa blz, é realmente eu deixei jogado aqui nos documentos o banco… nao sei onde ele deve ficar, vou da uma lida :slight_smile:

Nada… jah tentei de tudo Uu

Uma coisa tão simples, obrigado ao amigo “drsmachado” por ter me dado o toque
soh tive q adicionar outra coisinha q deu certo, 2 / ^^
ficou assim:

[code] String url = “jdbc:sqlite:c://sqliteadmin//MeuBanco.s3db”;

    public void conecta() throws Exception {  
        Class.forName("org.sqlite.JDBC");  
        conexao =  DriverManager.getConnection(url);  
        statement = conexao.createStatement(); 
        conexao.setAutoCommit(true);  
    }  [/code]

Ele ta adicionando perfeitamente no banco, ta lindo demais ^^
Obrigado, vou tentar criar o resto agora :smiley:

EDITANDO: pra ser sincero, era soh ter colocado o banco na pasta do projeto ^^ e poderia usar normalmente jdbc:sqlite:MeuBanco.s3db Uu começando a sacar as parada rsrs