Criar arquivo TXT pegando informações no banco

21 respostas
snowblacksoul

Pessoal sei que esse tópico tem vários,porém nao achei o que gostaria.
Gostaria em saber como criar um arquivo txt, através de um select no banco de dados e popular esse txt com as informações, é possivel:

select * from alunos where matricula = 02

21 Respostas

pedruhenrik

nossa tem mt coisa mesmo, nada te ajudou?

vc já sabe manipular arquivos txt?

e consultas no banco?

att,

snowblacksoul

consulta no sql blz!
mas manipular txt nao!!
na verdade sou iniciante!

pedruhenrik

e buscar no fórum antes de abrir um novo post repetido?
já pensou em fazer isso?

http://www.guj.com.br/search?cx=partner-pub-9448585618971060%3A4001950301&cof=FORID%3A10&ie=UTF-8&q=manipular+txt&x=8&y=6&
siteurl=www.guj.com.br%2F#1186

o 8° link de baixo para cima da primeira página é um ótimo artigo.

att,

snowblacksoul

Ok Amigo, vi que tem alguns post, mas como disse nao me ajudaram, mas tudo bem era só pra me ajudar a pegar de um select e polular um txt!
mas valeu pela sua ajuda!

pedruhenrik

se surgirem outras dúvidas, (e após uma busca rsrs) posta o q vc fez, o q vc gostaria de fazer e o erro.

boa sorte.

att,

snowblacksoul

ok pedru como tinha dito rsrs eu fiz a busca e nao obtive exito, mas blz!! valeu pela sua ajuda!!
grato

E

cara coloca ai o que vc fez

o metodo que vc fez ele retornando um list,coloca aii

ViniGodoy

Cara, o que exatamente você quer fazer?

Já vi umas 2 ou três sugestões que fazem exatamente o que você pediu. Aliás, o tópico está resolvido ou não? Se está, como resolveu?

snowblacksoul

Olá Vini, pode me passar esses resultados que achou!!?

Bem o que eu quero pode ser até simples, mas nao estou conseguindo fazer, aliás nao sei como fazer!!

queria através de um select na tabela, criar um arquivo txt com as informações desse select ?!

ViniGodoy
E esse código que te passaram não funcionou pq?
File file = new File("arquivo.txt");
PrintWriter pw = new PrintWriter(file);

ResultSet rs = suaConnection.createStatement().executeQuery("seu select vai aqui");
ResultSetMetaData md = rs.getMetaData();
while(rs.next()){
    for(int i = 0; i < md.getColumnCont(); i ++){
        pw.append(rs.getObject(i) + ";");
    }
}
pw.flush();
snowblacksoul

Estou fazendo da seguinte forma

public class teste {
    private static Statement st;
    private static ResultSet rs;
    public static void main(String[] args) throws ClassNotFoundException, FileNotFoundException, SQLException{

try{
            Class.forName("oracle.jdbc.OracleDriver");
            Connection con=  DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl11g","system","11g");
            System.out.println("CONECTADO!!!!!");
            con.close();
            st = con.createStatement();
            rs = st.executeQuery("select * from system.livros");
    //isbn, titulo,edicao_num,ano_publicacao, descricao
}catch(SQLException e){
    e.printStackTrace();
}

File file = new File("arquivo.txt");
PrintWriter pw = new PrintWriter(file);


ResultSet stt = st.executeQuery("select * from system.livros");

ResultSetMetaData md = stt.getMetaData();
while(stt.next()){

    for(int i = 0; i < md.getColumnCount(); i ++){
        pw.append(stt.getObject(i) + ";");
    }
}
pw.flush();



    }
}

e está dando erro

CONECTADO!!!!! java.sql.SQLException: Conexão Fechada Java Result: 1 CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)

snowblacksoul

Vini , você pode me ajudar por favor!?

ViniGodoy

Remova a linha 10 do seu código. Note que vc mesmo está fechando a conexão com o banco, como vc espera depois rodar statements nela?

Outra coisa, não adianta insistir no tópico.
Eu vou voltar a visita-lo sempre que receber um e-mail daqui, mas não fico 100% do tempo na frente do computador, ou esperando e-mails do GUJ.

snowblacksoul

Ok Vini valeu!!!

Olha ainda nao conseguir, a classe rodou em erro agora , tirando a linha 10, mas nao está gerando nada no arquivo txt.

snowblacksoul

Pessoal conseguir fazer mais ou menos, ainda está dando erro e nao popula o txt, alguém poderia ajudar!?

public class testeb {

    private static java.sql.Statement st;
    private static ResultSet rs;

    public static void main(String[] args) throws ClassNotFoundException, FileNotFoundException {


        try{

               Class.forName("oracle.jdbc.OracleDriver");
                    Connection con=  DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl11g","system","11g");
                    System.out.println("CONECTADO!!!!!");

            st = con.createStatement();

            ResultSet rs = st.executeQuery("SELECT * FROM system.livros");

            //isbn, titulo,edicao_num,ano_publicacao, descricao
            if(rs.next()){
                String coluna1 = rs.getString("isbn");
                String coluna2 = rs.getString("titulo");
                String coluna3 = rs.getString("edicao_num");
                String coluna4 = rs.getString("ano_publicacao");
                String coluna5 = rs.getString("descricao");

                 System.out.println(coluna1+coluna2+coluna3+coluna4+coluna5);

                    File file = new File("arquivo.txt");
                    PrintWriter pw = new PrintWriter(file);


            ResultSetMetaData md = rs.getMetaData();
            while(rs.next()){
               for(int i = 0; i < md.getColumnCount(); i ++){
            pw.append(rs.getObject(i) + ";");
    }
}
pw.flush();
            }

            }catch(SQLException e){
                e.printStackTrace();
            }

        }
    }

seguinte erro:

nel

Oi!

Procure postar o Stacktrace completo, e não somente uma parte. Fica muito mais fácil de identificar o que está ocorrendo.
E ao meu ver, você deve executar antes de mais nada o mesmo select que faz em código diretamente em um client do seu banco, posteriormente, rever se estão corretos os nomes atribuidos as colunas, pois me parece que há algum inválido.

Abraços.

E

Acredito que as informações que vc está passando para conectar ao banco esteja errada , reveja essa informaçoes = nosso amigo nel disse

ViniGodoy

Outra coisa… o seu if e seu while estão testando a mesma coisa. E já que vc pega uma a uma coluna por nome, não há necessidade de usar o resultSetMetaData. Ele só é usado se vc quiser fazer um método genérico, capaz de gerar o txt a partir de qualquer ResultSet:

//isbn, titulo,edicao_num,ano_publicacao, descricao File file = new File("arquivo.txt"); PrintWriter pw = new PrintWriter(file); while(rs.next()){ pw.printf("%s;%s;%s;%s;%s", rs.getString("isbn"), rs.getString("titulo"), rs.getString("edicao_num"), rs.getString("ano_publicacao"), rs.getString("descricao")); System.out..printf("%s;%s;%s;%s;%s", rs.getString("isbn"), rs.getString("titulo"), rs.getString("edicao_num"), rs.getString("ano_publicacao"), rs.getString("descricao")); } pw.flush(); pw.close();

snowblacksoul

Pessoal valeu mesmo, muito obrigado pela ajuda, conseguir fazer!!!
Vou colocar o código para aqueles que quiserem fazer o mesmo!!!

import java.beans.Statement;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

/**
 *
 * @author snowblacksoul
 */

public class testeb {

    private static java.sql.Statement st;
    private static ResultSet rs;

    public static void main(String[] args) throws ClassNotFoundException, FileNotFoundException, SQLException {


        try{

               Class.forName("oracle.jdbc.OracleDriver");
                    Connection con=  DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl11g","system","11g");
                    System.out.println("CONECTADO!!!!!");

            st = con.createStatement();

            ResultSet rs = st.executeQuery("SELECT * FROM system.livros");

            //isbn, titulo,edicao_num,ano_publicacao, descricao


                   File file = new File("arquivo.txt");
                    PrintWriter pw = new PrintWriter(file);
                    while(rs.next()){
                    pw.printf("%s;%s;%s;%s;%s\n", rs.getString("isbn"), rs.getString("titulo"), rs.getString("edicao_num"),rs.getString("ano_publicacao"), rs.getString("descricao"));

      System.out.printf("%s;%s;%s;%s;%s", rs.getString("isbn"), rs.getString("titulo"), rs.getString("edicao_num"),
          rs.getString("ano_publicacao"), rs.getString("descricao"));
    }
    pw.flush();
    pw.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
      }
  }

valeu gente!!!

ViniGodoy

Aproveite que vc está usando o printf para requisitar os dados em seus tipos certos. Por exemplo, o ano não seria um int?

snowblacksoul

Valeu Vini!
muito obrigado!

Criado 5 de julho de 2011
Ultima resposta 6 de jul. de 2011
Respostas 21
Participantes 5