- 论坛徽章:
- 0
|
在做notes库里边的附件上传oracle的时候出现getBlob方法不能使用,因为r5采用的jdk版本为1.1.x,所以陷入困境,那位强人做过这个,还有什么其他方法,给介绍一下(采用java写的)。代码如下:
import lotus.domino.*;
import java.sql.*;
import java.net.*;
import java.awt.*;
import java.io.*;
import java.util.*;
import java.text.*;
import oracle.sql.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Class.forName("oracle.jdbc.driver.OracleDriver" ;
String url= "jdbc racle:thin 127.0.0.1:1521 x";
Connection conn= DriverManager.getConnection(url, "xx", "xx" ;
Statement stmt=conn.createStatement();
Document doc=agentContext.getDocumentContext();
RichTextItem zhw=(RichTextItem) doc.getFirstItem("zhenwen" ;
String id=null;
Vector v = zhw.getEmbeddedObjects();
Enumeration e = v.elements();
EmbeddedObject eo = (EmbeddedObject)e.nextElement();
while (e.hasMoreElements()) {
if (eo.getType() == EmbeddedObject.EMBED_ATTACHMENT) {
eo.extractFile("c:\\temp\\" + eo.getSource());
//eo.remove();
}
}
String sql="select max(to_number(attachid)+1) from t_attach";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
id = rs.getString(1);
if (id == null) {
id = "000000000001";
}
else {
id = id.trim();
}
}
//ResultSet rs=stmt.executeQuery(sql);
sql = "insert into t_attach(attachid,attachname,attachcontent,extname,fileid,fileflag)" +
"values(?,?,empty_blob(),?,?,?)";
//stmt.execute(sql);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, doc.getItemValueString("bh" );
pstmt.setString(3, eo.getClassName());
pstmt.setString(4, null);
pstmt.setString(5, "1" ;
pstmt.executeUpdate();
File file = new File("c:\\temp",eo.getSource());
if(file.exists()){
eo.getSource();
} ;
sql = "select attachcontent from t_attach where attachid=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
BLOB blob=null;
if(rs.next()){
blob=(oracle.sql.BLOB)rs.getBlob("attachcontent" ;//该处出现getBlob方法不存在的提示
}
InputStream is = new FileInputStream(file);
OutputStream os = blob.getBinaryOutputStream();
//OutputStream os =new FileOutputStream(file);
byte[] buf = new byte[4 * 1024];
int reader = 0;
while ((reader = is.read(buf)) != -1) {
os.write(buf, 0, reader);
}
// (Your code goes here)
} catch(Exception e) {
e.printStackTrace();
}
}
}
[ 本帖最后由 lenf 于 2006-8-9 15:05 编辑 ] |
|