import java.sql.*;
import java.io.*;
/**
*
* @author Administrator
*
*/
public class JpgAndOracle {
// Create.java
public void Create(String a){
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String URL="jdbc:oracle:thin:@localhost:1521:gatest";
String user="water";
String password="water";
Connection con = DriverManager.getConnection(URL,user,password);
Statement st = con.createStatement();
st.execute("CREATE TABLE mytable(id varchar2(10) null, picname varchar2(50) null, pic BLOB null);");
st.close();
con.close();
} catch(Exception e) {
e.printStackTrace();
}
}
public void SavePic(String a) {
Connection con;
PreparedStatement st;
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String URL="jdbc:oracle:thin:@localhost:1521:gatest";
String user="water";
String password="water";
con = DriverManager.getConnection(URL,user,password);
String sql = "INSERT INTO mytable(id,picname, pic) values('1','mmpic',?)";
st = con.prepareStatement(sql);
File f = new File("d://mmpic.jpg");
FileInputStream fis = new FileInputStream(f);
st.setBinaryStream(1, fis, (int)f.length());
st.executeUpdate();
st.close();
con.close();
} catch(Exception e) {
e.printStackTrace();
}
}
// ReadPic.java 从数据库中读出图片存成文件
public void ReadPic(String a) {
Connection con;
Statement st;
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String URL="jdbc:oracle:thin:@localhost:1521:gatest";
String user="water";
String password="water";
con = DriverManager.getConnection(URL,user,password);
String sql = "SELECT pic FROM mytable WHERE id='1'";
st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
rs.next();
File f = new File("C://b.jpg");
FileOutputStream fos = new FileOutputStream(f);
InputStream is = rs.getBinaryStream("pic");
int c;
byte b[] = new byte[4*1024];
while ((c=is.read(b))!=-1) {
fos.write(b, 0, c);
}
fos.flush();
is.close();
st.close();
con.close();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
int sw = 3;
JpgAndOracle test = new JpgAndOracle();
switch (sw) {
case 1: // 建表
{
test.Create("a");
break;
}
case 2: // 读图片插入数据库
{
test.SavePic("b");
break;
}
case 3: // 读出图片行成文件
{
test.ReadPic("c");
break;
}
}
}
}