【发布时间】:2014-04-25 04:18:51
【问题描述】:
我正在使用 Java/Swing/Oracle 10g 数据库和
有一个名为 photo 的表,photoID 作为数字,photo 作为 blob,我正在使用 JFileChooser 打开并显示一张照片,但它不会将其保存到我的数据库中。
错误
java.sql.SQLException: Invalid column index
代码
enter code here
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* Photo.java
*
* Created on Mar 18, 2014, 5:51:22 PM
*/
package ems;
import java.io.*;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import java.sql.*;
/**
*
* @author css102134
*/
public class Photo extends javax.swing.JFrame {
/** Creates new form Photo */
public Photo() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
Jlabel = new javax.swing.JLabel();
browseButton = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
Jlabel.setText("choose file:");
browseButton.setText("browse");
browseButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
browseButtonActionPerformed(evt);
}
});
jLabel2.setText("photo");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(33, 33, 33)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel2)
.addComponent(Jlabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(browseButton)
.addContainerGap(241, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(28, 28, 28)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Jlabel)
.addComponent(browseButton))
.addGap(29, 29, 29)
.addComponent(jLabel2)
.addContainerGap(206, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser fc = new JFileChooser();
fc.showOpenDialog(this);
File f = fc.getSelectedFile();
String path = f.getAbsolutePath();
Jlabel.setIcon(new ImageIcon(path));
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@localhost:1521:XE";
String u="ems2";
String p="ems2";
Connection con = DriverManager.getConnection(url,u,p);
PreparedStatement ps = con.prepareStatement("insert into photo (photos) values(?)");
FileInputStream fin=new FileInputStream("D:/Workspace/ems_ui/photos/prasanth.jpg");
System.out.println("hi");
ps.setBinaryStream(3, fin);
int status = ps.executeUpdate();
if(status>0)
{
jLabel2.setText("successfully inserted in Db");
}
else
{
jLabel2.setText("Image not inserted in Db");
}
con.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Photo().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel Jlabel;
private javax.swing.JButton browseButton;
private javax.swing.JLabel jLabel2;
// End of variables declaration
}
【问题讨论】:
-
我看不到 saveButtonActionPerformed(evt);您的帖子中的函数实现离子,但您正在调用该方法..该方法代码在哪里??
-
java.sql.SQLException: Invalid column index is the error am getting
-
嗨@Stunner,我想保留保存按钮,但我认为在浏览器中实现了保存操作
标签: java sql oracle jdbc runtime-error