Gravar nome dos arquivos no Banco[Resolvido]

11 respostas
progJava
Estou lendo os nome dos arquivos da pasta só que não consigo gravar esse nomes no banco,poderiam me ajudar? Vlw!
try

        {
            File f = new File("C:\\Users\\R\\Desktop\\pasta1");
File[] arquivos = f.listFiles(); //retorna um array de Files
String[] nomes = f.list(); //retorna o nome dos arquivos em Strings

//for(File f : arquivos){
//enjoy't
//}

for(String s : nomes)
{
JOptionPane.showMessageDialog(null,""+s);
 sz = s.toString();

            String sqlinsert ="insert into cad_nomes (no_nome) values ('"+


            sz.toString()+"')";

            imagens.statement.executeUpdate(sqlinsert);

            imagens.executeSQL("select * from cad_nomes");

            imagens.resultset.first();


        }
}
         catch(SQLException erro)
        {
         JOptionPane.showMessageDialog(null,"XC:"+erro);
        }


    }

11 Respostas

Leandro_M

Olá,

zs não foi tipada

sz = s.toString();

Perguntas:
Qual erro está dando?
De qual tipo é o obvjeto imagens.
Se puder coloca o código completo.

Abs

progJava

estou pegando o nome dos arquivos de um determinado diretório e tentando gravar esses nomes no banco de dados mais da o sequinte erro .:
error.: Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException

pedroroxd

No código postado tem algumas considerações a fazer:

  1. você não declara a variável sz
  2. Se sz é s.toString (linha 15), porque na linha 17 você faz o insert do sz.tostring ? Não seria somente o sz?
  3. Em vez de tentar gravar no banco de dados, manda printar na tela o conteúdo da variável sz, para ver se é realmente o que você quer.
  4. O programa dá algum erro? Entra no catch (SQLException)? Ou só não grava?
progJava
  1. você não declara a variável sz
    R.: ja declarado no inicio.: public static String sz;
  2. Se sz é s.toString (linha 15), porque na linha 17 você faz o insert do sz.tostring ? Não seria somente o sz?
    R.:sim mais teria que gravar mesmo assim
  3. Em vez de tentar gravar no banco de dados, manda printar na tela o conteúdo da variável sz, para ver se é realmente o que você quer.
    R.: ja mandei e aparece o nome corredo do arquivo
  4. O programa dá algum erro? Entra no catch (SQLException)? Ou só não grava?
    R.:ele apenas não grava não da erro na tela nada nada

o erro aparece no run single Erro .:Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException

pedroroxd
Tenta fazer algo alternativo:
String sql = "insert into cad_nomes (cad_no_nome) values (?)";

			// prepared statement para inserção
			PreparedStatement stmt = connection.prepareStatement(sql);

			// seta os valores (onde tá o ? vai pra sz)
			stmt.setString(1, sz);

			// executa e facha
			stmt.execute();
			stmt.close();
progJava
Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at Funções.CadastraImagens.Grava(CadastraImagens.java:72)

at Telas.Funcionário.jButton2ActionPerformed(Funcionário.java:988)

at Telas.Funcionário.access$1500(Funcionário.java:23)

at Telas.Funcionário$16.actionPerformed(Funcionário.java:341)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6038)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)

at java.awt.Component.processEvent(Component.java:5803)

at java.awt.Container.processEvent(Container.java:2058)

at java.awt.Component.dispatchEventImpl(Component.java:4410)

at java.awt.Container.dispatchEventImpl(Container.java:2116)

at java.awt.Component.dispatchEvent(Component.java:4240)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)

at java.awt.Container.dispatchEventImpl(Container.java:2102)

at java.awt.Window.dispatchEventImpl(Window.java:2429)

at java.awt.Component.dispatchEvent(Component.java:4240)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Leandro_M

Experimenta colocar seu código assim. Desculpe minha falta de conhecimento, mas nunca fiz desta forma que você fez.

Espero ter ajudado

PreparedStatement ps = null;

        try {
            String sql = "INSERT INTO ... VALUES (?)";

            ps = conexao.prepareStatement(sql);

            ps.setString(1, sz[...]);

            ps.executeUpdate();

            ps.close();

        } catch (RuntimeException ex) {
            throw new Exception(ex.getMessage());
        } catch (SQLException ex) {
            throw new Exception(ex.getMessage());
        } catch (Exception ex) {
            throw new Exception(ex.getMessage());
    }
pedroroxd
Foi o que eu falei, mas ele postou junto comigo =P
String sql = "insert into cad_nomes (cad_no_nome) values (?)";

			// prepared statement para inserção
			PreparedStatement stmt = connection.prepareStatement(sql);

			// seta os valores (onde tá o ? vai pra sz)
			stmt.setString(1, sz);

			// executa e facha
			stmt.execute();
			stmt.close();

Se pá vai precisar de uns try catch ou throw...

progJava

Mudei para um campo de text Jtextfield ele funciona só que é pra ele pegar o arquivo direto da variavel .sera que pode ser por ter vários arquivos o ñ?

String sqlinsert ="insert into into cad_nomes (cad_no_nome) values ('"+


            tf_nome.getText()+"')";
progJava

A ja entedi o erro tava no static

public static String rs;

e o métido

public static void Grava()

Como são varios arquivos ele não pode ser static.
Vlw!

Leandro_M

blz progJava.

Altera o titulo caso o problema estiver resolvido [RESOLVIDO].

Abs

Criado 24 de abril de 2010
Ultima resposta 24 de abr. de 2010
Respostas 11
Participantes 3