Desenvolvo um sistema para locadora e no cadastro de clientes tenho um botão que desejo utilizar para a inserção de fotos, que serão buscadas no sistema (windows), que possui o seguinte código.
[code]private void fotojButtonActionPerformed(java.awt.event.ActionEvent evt) {
String foto = “”;
final JFileChooser fc = new JFileChooser();
int returnVal = fc.showOpenDialog(teste = new javax.swing.JFrame());
arquivo_foto = fc.getSelectedFile();
nome_arquivo_foto = arquivo_foto.getName();
nome_arquivo_foto = " “+fc.getCurrentDirectory()+”"+nome_arquivo_foto+" “;
String sqlinserir = “Update Clientes set foto = ? Where idClientes = ?”;
if (nome_arquivo_foto.contains(”"))
foto = nome_arquivo_foto.replace(’’ ,’/’);
//foto = “C:/Users/Cleyton/Pictures/teste.jpg”;
try
{
con_clientes.inserir_foto(sqlinserir, foto, codigojTextField.getText());
JOptionPane.showMessageDialog(null, “Foto inserida com sucesso!”);
} catch (FileNotFoundException ex) {
Logger.getLogger(Clientes.class.getName()).log(Level.SEVERE, null, ex);
}
} [/code]
con_clientes.inserir_foto(sqlinserir, foto, codigojTextField.getText()); É um metodo que criei dentro da minha classe de Conexão com o Mysql.
onde possui três argumentos que são: primeio o sql a ser alterado, segundo o caminho da foto e terceiro a Id do cliente.
As minhas variaveis string arquivo_foto e nome_arquivo_foto são variáveis globais dentro da classe cadastro de clientes…
Aqui segue o meu método inserir dentro da minha classe de conexão…
public void inserir_foto(String sqlupdate, String arquivo_foto, String id) throws FileNotFoundException
{
try
{
JOptionPane.showMessageDialog(null,arquivo_foto);
System.out.println(arquivo_foto);
int ind;
ind = Integer.parseInt(id);
ps = conexao.prepareStatement(sqlupdate);
File image = new File(arquivo_foto);
FileInputStream fis = new FileInputStream(image);
ps.setInt(2, ind);
ps.setBinaryStream(1,fis,(int)image.length());
ps.executeUpdate();
}
catch(SQLException erro)
{
JOptionPane.showMessageDialog(null,"Não foi possivel iserir a foto o erro foi: " + erro + "\nO sql passado foi: " + sqlupdate);
}
}
O meu grande problema é que quando eu utilizo o metodo replace ou replaceAll para substituir o C:\Users\Cleyton\Pictures\imagem_mysql.jpg para
C:/Users/Cleyton/Pictures/imagem_mysql.jpg acontece o inusitado.
Aparentemente o replace funciona pois utilizo o metodo JOptionPane.showMessageDialog(null,arquivo_foto);, para visualizar a string alterada e nesse metodo ele consta como alterada mas quando o metodo inserir_foto pega essa string e cria o arquivo File da um erro…
E o retorno desse erro e que o caminho da imagem antes de ser alterada como se o replace nao tivesse funcionado…
Se eu descomentar a linha //nome_arquivo_foto = “C:/Users/Cleyton/Pictures/teste.jpg”; o força a regravação na string o meu método inserir_foto fuinciona
corretamente… Porém não é o interessante porque ai não justifica utilizar o JFileChooser para buscar a foto no sistema, e ficaria inserindo só uma imagem…
[quote]Detalhes do erro
C:/Users/Cleyton/Pictures/teste.jpg //Aqui é a impressão da string arquivo_foto dentro do método inserir na linha 06
30/03/2009 08:58:00 locadora.Clientes fotojButtonActionPerformed
SEVERE: null
java.io.FileNotFoundException: C:\Users\Cleyton\Pictures\teste.jpg (A sintaxe do nome do arquivo, pasta ou nome do volume está incorreta)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:106)
at locadora.Conexao.inserir_foto(Conexao.java:8
at locadora.Clientes.fotojButtonActionPerformed(Clientes.java:1012)
at locadora.Clientes.access$1200(Clientes.java:24)
at locadora.Clientes$13.actionPerformed(Clientes.java:520)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:231
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:6216)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5981)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4583)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 1 minuto 21 segundos)[/quote]
Alguém poderia me ajudar?