导航:首页 > 编程大全 > doc文件在数据库里

doc文件在数据库里

发布时间:2023-09-15 10:27:25

java中 如何将存放在数据库中的pdf、doc、jpg等文件读出来(二进制形式存放在数据)

在数据库中存放这些个二进制文件的字段是BLOB,oracle和MysqL里面都是
java中读取 BLOB数据:
首先做查询,拿到查询结果ResultSet rs = XXXX (和普通数据查询一样)
然后:Blob blob = rs.getBlob("字段名"); 拿到你的Blob ,
得到文件的二进制流:InputStream binaryStream= blob.getBinaryStream();,
你的文件数据就在这个流当中,你想怎么用就怎么取,比如,读出来存到一个byte[]中,以便序列化传输,读出来构造成一个File直接存放到本地等等。

举个例子吧:从这个binaryStream中读取数据到byte[]的方法,
////////---------------------
/**
* 从binaryStream中读取数据到byte[]的方法
* @param in 即binaryStream
* @return
* @throws Exception
*/
public static byte[] readStreamToByteArray(InputStream in) throws Exception{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while((len = in.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
outputStream.close();
in.close();
return outputStream.toByteArray();
}

//

Ⅱ C# sql数据库中word文档的保存和读取

在Sql Server中存储、读写Word文件,需要将指定表字段添加为Image类型,示例表结构为:
1 CREATE TABLE CONTRACTS (
2 ID VARCHAR (50),
3 CONTRACT_FILE IMAGE
4 );
CONTRACT_FILE字段就是要存储Word文件的字段,在存储前,有一个小插曲,你需要将Word文件转换为byte数组,可参考以下代码实现:
1 //将文件转换为byte数组
2 public static byte[] File2Bytes(string fileName)
3 {
4 FileStream fs = new FileStream(fileName,FileMode.OpenOrCreate, FileAccess.Read);
5 byte[] fileDatas = new byte[fs.Length];
6 fs.Read(fileDatas, 0, System.Convert.ToInt32(fs.Length));
7 fs.Close();
8 return fileDatas;
9 }
接下来就是将转换后的byte[]数组存储到SqlServer的对应字段中,具体实现代码可看如下代码段:
01 //将文件存储到数据库
02 public bool UpdateContractFile(string id, byte[] fileBytes)
03 {
04 string sql = "UPDATE CONTRACTS SET CONTRACT_FILE=@CONTRACT_FILE WHERE ID=@ID";
05 using (SqlConnection conn = new SqlConnection(this.m_DataAccess.ConnectString))
06 {
07 conn.Open();
08 using (SqlCommand cmd = new SqlCommand())
09 {
10 cmd.Connection = conn;
11 cmd.CommandText = sql;
12 cmd.Parameters.Clear();
13 cmd.Parameters.Add(new SqlParameter("@CONTRACT_FILE", SqlDbType.Image));
14 cmd.Parameters["@CONTRACT_FILE"].Value = fileBytes;
15 cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.VarChar));
16 cmd.Parameters["@ID"].Value = id;
17 return cmd.ExecuteNonQuery() > 0 ? true : false;
18 }
19 }
20 }
同时,因之前转换了数据类型,所以从数据库中读取Word文件时,要先将Image类型的字段转换为bytes[],代码如下:
01 //通过ID获取文件byte数组
02 public byte[] GetContractFile(string id)
03 {
04 string sql = "SELECT CONTRACT_FILE FROM CONTRACTS WHERE ID='{0}'";
05 sql = string.Format(sql, id);
06 object contractFile;
07 contractFile = this.m_DataAccess.ExecuteScalar(sql);
08 if (contractFile == null)
09 {
10 return new byte[0];
11 }
12 else
13 {
14 return (byte[])contractFile;
15 }
16 }
在获取到文件的byte[]后,将该文件再通过文件流存储为Word文件,以下代码可实现此功能:
01 //将byte[]数组存储为Word文件
02 byte[] fileBytes = this.m_ContractsBusiness.GetContractFile(id);
03 if (fileBytes.Length == 0)
04 {
05 XMessageBox.ShowError("未找到合同文件!");
06 return;
07 }
08 SaveFileDialog sfd = new SaveFileDialog();
09 sfd.Filter = "Word文件(*.doc)|*.doc";
10 if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
11 {
12 try
13 {
14 string saveFileName = sfd.FileName;
15 int arraysize = new int();
16 arraysize = fileBytes.GetUpperBound(0);
17 FileStream fs = new FileStream(saveFileName, FileMode.OpenOrCreate, FileAccess.Write);
18 fs.Write(fileBytes, 0, arraysize);
19 fs.Close();
20 if (XMessageBox.ShowQuestion("文件存储成功,是否立即打开文件?") ==
21 System.Windows.Forms.DialogResult.Yes)
22 {
23 Process.Start(saveFileName);
24 }
25 }
26 catch (Exception ex)
27 {
28 XMessageBox.ShowError("操作失败!");
29 }
上面的几段代码只是核心代码,并不是完整的代码段,用时候要看清,自己再修改下。

Ⅲ 数据库中存放文件的相对路径,在页面上怎么从服务器取出文件

1、双击打开链接,打开对应的总连接。

阅读全文

与doc文件在数据库里相关的资料

热点内容
c怎么编程改名字 浏览:146
哪些电视剧app不带logo的 浏览:406
开机后桌面变黑色桌面文件丢失 浏览:136
网络电视怎么用遥控器 浏览:953
我的世界json打开失败 浏览:867
易语言56教程视频 浏览:610
linux开机启动文件 浏览:773
给宝宝唱儿歌用什么app 浏览:354
投标文件为什么要使用cad软件 浏览:522
一季度保险业务数据如何看 浏览:398
为什么行车记录仪文件大小为0 浏览:795
win10笔记本传输文件 浏览:735
棉花糖小说下载的小说在哪个文件 浏览:750
淘宝网页特效代码 浏览:921
找不到指定的文件是什么意思 浏览:659
cad打不出stl文件 浏览:439
红米4进入最近应用程序 浏览:943
word2013官方下载免费版win7 浏览:80
在线考试系统数据库设计表 浏览:190
win10访问不了ftp共享文件夹权限 浏览:1

友情链接