1.首先你需要保证插入的字段是一个BLOB空值
如果是存在的请初始化成 empty_blob();
update yourtablename t set t.yourcol = empty_blob()
where xxx = xxx ;
如果是不存在的请
insert 的时候插入一个empty_blob()空值。
2.然后查询出这条FOR UPDATE
select t.yourcol
into b_content
from yourtablename t
where XXX = XXX for update;
3.引用dbms_lob编辑大字段,c_content是你的文件内容
DBMS_LOB.OPEN(b_content, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.WRITE(b_content, n_length, 1, UTL_RAW.cast_to_raw(c_content));
DBMS_LOB.CLOSE(b_content);
4.最后
commit;
怎样用C#将oracle中读出的blob文件显示出来?
要显示的前提是:电脑上必须已经安装了可以浏览PDF的软件,例如: Adobe Reader,Foxit PDF Reader 等,并且这些软件启用了浏览器插件。
然后,在ASPX.CS页面直接用
Response.ContentType = "application/pdf";
Response.BinaryWrite( [blob内容] );
就可以了
oracle中的blob类型字段中的文本内容怎样读取和存入
不知道你用的编程语言是什么 若是java 的话 直接从数据库里面拿(如果有hibernate支持)那就domain.getBlob()。然后用流去将blob转换成string 具体怎么做 百度。
存值的时候是将表单的string转换成blob再塞进数据库。newSerialBlob(String对象的.getBytes())
c#怎么把窗体上的PDF存入数据库
我的理解,你问题的关键是程序如何往数据库里写入文件。对吧?无论是什么类型的文件。
这里有一些概念上的东西和你一起清理一下:
1)你需要了解你要用什么数据库?流行的企业级别的有:oracle,MSSQLServer, Sybase等,桌面的就更多了MSACCESS, MSSQL EXPRESS, SQLITE, POSTGRESQL等。无论什么数据库肯定会有一种数据类型为二进制的如oracle叫BLOB可以存放大量的数据流;
2)设计的核心就是通过C#前台程序的序列化功能将任何的文件以流的形式读入内存,转化成二进制文件流stream,然后通过特定的数据库API接口将该数据流写入数据库保存到上面提到的BLOB中
3)使用的时候,就从数据库里先把二进制数据流读出来,然后写入一个新文件里。
以上是设计概要,真正要实现一个软件会遇到很多具体问题,个人认为这是一个很好的将理论转化为实践的机会。多看看C#的技术书
如何用sql语句写入含blob类型字段的数据
很久没用过PB了,网上找了一篇,大致看了一下,应该没什么问题 --转自51CTO论坛 在PowerBuilder里面操作BLOB数据地灵活技术 PowerBuilder提供的BLOB(Binary Large Object)数据类型可以用来处理大型数据
给oracle中的存储过程传递一个Blob类型的字段,java代码怎么写?
现在 在看到你的问题 。 我把代码贴给你
条件准备
Oracle数据库中有表如下
CREATE TABLE BOOK(
ID NUMBER PRIMARY KEY,
F BLOB
);
ConnectionManager类不解释。
package org.db;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 此类掩饰java操作Oracle BLOB类型
* @author wanghao
*
*/
public class SaveFile {
private final static String PSQL = "insert into BOOK(ID,F) " + "values(?,EMPTY_BLOB())";
private final static String SSQL = "select F from BOOK where ID = ? for update";
private final static String USQL = "update BOOK set F = ? where ID = ?";
/**
* 将文件存入数据库
* @param file 要存入数据库的文件
* @param id 为了掩饰方便,手动输入 ID
* @throws Exception
*/
public void save(File file,int id) throws Exception {
Connection conn = ConnectionManager.getConnection();
conn.setAutoCommit(false);
PreparedStatement pstmt = null;
PreparedStatement pstmt2 = null;
try {
pstmt = conn.prepareStatement(PSQL);
pstmt2 = conn.prepareStatement(USQL);
pstmt.setInt(1, id);
try {
pstmt.executeUpdate();// 在数据库中插入空对象
} catch (SQLException ex) {
ex.printStackTrace();
}
pstmt = conn.prepareStatement(SSQL);
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery();// 查询新插入的记录
oracle.sql.BLOB pc = null;
while (rs.next()) {
pc = (oracle.sql.BLOB) rs.getBlob(1);
}
byte[] data = file2Byte(file);
pc.putBytes(1, data);
pstmt2.setBlob(1, pc);
pstmt2.setInt(2, id);
pstmt2.executeUpdate();
conn.commit();
} finally {
try {
pstmt.close();
pstmt2.close();
} catch (Exception EE) {
}
}
}
/**
* 将文件转成byte数组
* @param file 被转成 byte数组的file
* @return
* @throws Exception
*/
public byte[] file2Byte(File file) throws Exception{
FileInputStream fin = new FileInputStream(file);
byte[] b = new byte[(int) file.length()];
fin.read(b);
fin.close();
return b;
}
/**
* 从数据库中将文件写入到本地硬盘
* @param id
* @throws Exception
*/
public void readFile(int id) throws Exception{
byte[] b = new byte[1024];
Connection conn = ConnectionManager.getConnection();
PreparedStatement pstmt = null;
String sql = "select F from BOOK where ID = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery();// 查询新插入的记录
oracle.sql.BLOB pc = null;
while (rs.next()) {
pc = (oracle.sql.BLOB) rs.getBlob(1);
}
InputStream in = pc.getBinaryStream();
OutputStream os = new FileOutputStream(new File("T:\\io\\java_temp.pdf"));
int len = 0;
while((len=in.read(b))!=-1){
os.write(b,0,len);
}
os.flush();
os.close();
in.close();
rs.close();
pstmt.close();
conn.close();
}
public static void main(String[] args) throws Exception{
SaveFile sf = new SaveFile();
// File file = new File("T:\\io\\java.pdf");
int id = 2;
// sf.save(file, id);
sf.readFile(id);
}
}
这是我根据网络上的例子改写的,比较清晰,希望对你有帮助!
pdf 怎么把html变成pdf
方法一:
最初是在老外的网站看到 http://hmkcode.com/itext-html-to-pdf-using-java/
Java代码
// step 1
Document document = new Document();
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("pdf.pdf"));
// step 3
document.open();
// step 4
XMLWorkerHelper.getInstance().parseXHtml(writer, document,
new FileInputStream("index.html"));
//step 5
document.close();
System.out.println( "PDF Created!" );
Maven构建对应的版本 关于eclipse配置maven,可以参考此文
Xml代码
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf.tool</groupId>
<artifactId>xmlworker</artifactId>
<version>5.4.1</version>
</dependency>
最简单的方式,HTML支持度很好,可惜不支持中文 源码地址:https://github.com/hmkcode/Java/blob/master/itext-java-html-pdf
方法二:
使用的jar包:itext-2.0.8.jar core-render.jar
App.java
Java代码
/**
*
* @author LJS
*
*/
public class App {
public void createPdf() throws Exception {
// step 1
String inputFile = "index.html";
String url = new File(inputFile).toURI().toURL().toString();
String outputFile = "index.pdf";
System.out.println(url);
// step 2
OutputStream os = new FileOutputStream(outputFile);
org.xhtmlrenderer.pdf.ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
// step 3 解决中文支持
org.xhtmlrenderer.pdf.ITextFontResolver fontResolver = renderer
.getFontResolver();
fontResolver.addFont("c:/Windows/Fonts/simsun.ttc", BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED);
renderer.layout();
renderer.createPDF(os);
os.close();
System.out.println("create pdf done!!");
}
public static void main(String[] args) throws Exception {
App app = new App();
app.createPdf();
}
}
注意指定中文字体
要转换的HTML
index.html
Html代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns="http://www.w3.org/1999/xhtml ">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>itext-zh-cn</title>
<style type="text/css">
body {
font-family: SimSun;
}
</style></head>
<body>
<p align="left" >OK,支持中文了:)</p>
</body>
</html>
同样也要指定中文字体,区分大小写
运行程序,转换结果:
(字体样式和大家熟知的宋体不同,因为我替换了系统默认的宋体,pdf查看工具推荐PDF-XChange Viewer)
pdf样式修改为A4 ( Document doc = new Document(PageSize.A4.rotate());)
在index.html中添加
Html代码
<style type="text/css">
@page{ size: 11.69in 8.27in;}
...
</style>
注意:无论哪种方式的Html格式转换pdf,对于html源文件要求是语法严格的;方法二支持基本的CSS样式,可以调整出合适的HTML模板。
大家有更好的方法,欢迎交流
其他:itext添加图片方法:实际应用中,应该与生成pdf合成一步提升性能
Java代码
public static void addImg(String fm) throws Exception {
PdfReader reader = new PdfReader("temp.pdf");
PdfStamper stamp = new PdfStamper(reader,new FileOutputStream("model.pdf"));
Image img = Image.getInstance("code.png"); //使用png格式
img.setAlignment(Image.LEFT | Image.TEXTWRAP);
img.setBorderWidth(10);
img.setAbsolutePosition(420, 240);
img.scaleToFit(1000, 60);// 大小
PdfContentByte over = stamp.getUnderContent(1); // overCount 与underCount
over.addImage(img);
stamp.close();
reader.close();
}
itext 版本号众多,可以在gerpcode查找其所有的版本
js怎么实现将流写成文件实现pdf在线预览
Viewer JS预览pdf文件,其pdf文件只能url地址,不支持获取文件流到客户端,生成blob地址预览。而PDFJS能够支持
转载请注明出处51数据库 » blobpdf转换word oracleBLOB上传文件
蜂蜜柠檬哎呦不错哦