在Eclipse3.1.1访问Weblogic 9.0中数据源的JDBC简单应用关于数据源配置详见http://blog.youkuaiyun.com/blue_fire2008/archive/2008/05/08/2413398.aspx)在项目TestJDBC中新建类,名为:TestBlob,源代码如下:
package myjdbc;
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import javax.transaction.UserTransaction;
import java.util.Properties;
import java.io.*;
public class TestBlob{
Connection con=null;
public void addBlob() //向数据库bookdb表mypic中添加BLOB数据
{
try
{
//创建一个PreparedStatement实例
PreparedStatement pstmt=con.prepareStatement("insert into mypic values('1',?)");
File file = new File("c://pic1.jpg") ;
FileInputStream fis = new FileInputStream(file);
//把输入流设置为预处理语句的对象。
pstmt.setBinaryStream(1, fis, (int)file.length());
pstmt.executeUpdate(); //执行更新
pstmt.close();
fis.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void createTable() //创建表mypic
{
try
{
con.createStatement().execute("create table mypic (id char(1) primary key,pic blob);");
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
*/
public void getBlob() // 从数据库bookdb表mypic中读取BLOB数据
{
try
{
Statement stmt=con.createStatement();
ResultSet rst=stmt.executeQuery("select * from mypic where id='1'");
rst.next();
//获得blob数据和它的输入流,然后通过输入流把数据写到文件中。
Blob blob = rst.getBlob("pic") ;
FileOutputStream out=new FileOutputStream(new File("c:/pic2.jpg"));
InputStream in=blob.getBinaryStream();
int i;
while((i=in.read())!=-1)
out.write(i);
in.close();
out.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)throws Exception
{
DataSource ds = null;
Context ctx = null;
Connection myCon = null;
TestBlob test = new TestBlob();
Properties p=new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL,"t3://localhost:7001");
try {
ctx=new InitialContext(p);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
try
{
ds = (javax.sql.DataSource) ctx.lookup("MySQLDS");
myCon = ds.getConnection();
test.con = myCon;
System.out.println("成功建立连接!");
test.createTable();
System.out.println("成功建立表!");
test.addBlob();
System.out.println("成功将 Blob添加到表字段!");
test.getBlob();
System.out.println("成功从表字段pic获得Blob!");
myCon.close();
}
catch (Exception E)
{
myCon.close();
System.out.println("Init Error: " + E);
}finally{
try {
if (myCon!=null) {
myCon.close();
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
2,启动MySQL和Weblogic服务器,运行TestBlob,若控制台显示如下信息,则表示成功存取大数据对象,在驱动器也可以看到新建的对象.
成功建立连接!
成功建立表!
成功将 Blob添加到表字段!
成功从表字段pic获得Blob!
3,文件路径的访问分隔符是//或/,单个/是不行的.
欢迎转载,转载请注明出处!
BLUE_FIRE2008 2008年5月8日于南昌