一般的如果通过将图片的绝对路径存入数据库,然后通过java连接数据库来调用是行不通的,因为java不支持C:\file\test.txt这类格式,这样的路径转到数据库中则会变成c:flie test.tex。甚至有时候遇到\t还会横向跳8个空格。基于这样的情况本人想到了一个笨方法:我们可以获取了图片的绝对路径后获取其名称,然后将该图片名称存入数据库,这样就不会产生冲突了。
具体步骤如下:1.获取文件的绝对路径(JFileChooser jfc = new JFileChooser(); String fname = jfc.getSelectedFile().getAbsolutePath())
2. 获取文件的名称:File file1 = new File(fname);PicRoad = file1.getName();
3. 将该图片名称存入数据库
4. 通过标签来显示从数据库调用出来的图片( ImageIcon pic = new ImageIcon("G:/MyEclipse/Science/Picture/"+rs.getString("PicRoad")); JLabel viewpict = new JLabel(pic);
) PicRoad为图片存在数据库中的属性名。
总结:通过将路径写死从而避免了将图片的绝对路径存入数据库。以此实现绝对路径的数据库存放。
部分代码演示:
JFileChooser jfc = new JFileChooser();
if (jfc.showOpenDialog(addGoods.this) == JFileChooser.APPROVE_OPTION) // 解释下这里,弹出个对话框,可以选择要上传的文件,如果选择了,就把选择的文件的绝对路径打印出来
{
// /添加图片
System.out.println(jfc.getSelectedFile().getAbsolutePath());
String fname = jfc.getSelectedFile().getAbsolutePath();
// System.out.println(PicRoad);
File file1 = new File(fname);
PicRoad = file1.getName();
System.out.println(file1.getName());
}
while (rs.next()) {
ImageIcon pic = new ImageIcon("G:/MyEclipse/Science/Picture/"+rs.getString("PicRoad"));
System.out.println(pic);
JLabel viewpict = new JLabel(pic);
viewpict.setBounds(0, 0, 243, 224);
viewpic.getContentPane().add(viewpict);
rs.getString("PicRoad");
}