oracle数据库blob导出PDF
blob 数据库类型是存储4g以内的二进制文件流,是不会改变文件任何地方的,存入数据库之后,再获取出来也是一个很好的文件管理。一下是我写的一个导出数据库的代码,网上老是不到好用的。
源代码如下:
ArrayList lis = new ArrayList();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
Model.Contract info = new Model.Contract();
info = (Model.Contract)dataGridView1.Rows[i].Tag;
if (info != null && (bool)((DataGridViewCheckBoxCell)dataGridView1.Rows[i].Cells[0]).EditedFormattedValue)
lis.Add(info);
}
if (lis != null && lis.Count > 1)
{
MessageBox.Show("请选择一条合同修改!", "提示");
}
else if (lis != null && lis.Count == 1)
{
Model.Contract info = (Model.Contract)lis[0];
string fileName = info.CotrName;
string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "pdf";
saveDialog.Filter = "pdf文件|*.pdf";
saveDialog.FileName = fileName;
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0) return; //被点了取消
string connString = "User ID=scott;Password=tiger;Data Source=orcl;";
string strSQL = @"select
files
from com_contract t
where t.cotrid = '{0}'";
strSQL = string.Format(strSQL, info.CotrID);
OracleLob lob = null;
OracleConnection conn = new OracleConnection(connString);
conn.Open();
OracleCommand oraCmd = new OracleCommand(strSQL, conn);
//DataReader提供一种从数据库读取行的只进流的方式。
OracleDataReader reader = oraCmd.ExecuteReader();
try
{
reader.Read();
lob = reader.GetOracleLob(0);
if (lob != null && lob.Length > 0)
{
FileStream fs = new FileStream(saveFileName, FileMode.Create);
BinaryWriter w = new BinaryWriter(fs);
byte[] pdf = new byte[lob.Length];
BinaryReader read = new BinaryReader(lob);
read.Read(pdf, 0, Convert.ToInt32(lob.Length));
w.Write(pdf);
w.Flush();
w.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("下载合同PDF文件失败!" + ex.ToString(), "提示");
getsavefilename }
finally
{
reader.Close();
conn.Close();
}
}
else
MessageBox.Show("请选择下载合同!", "提示");
这个是pdf 的取出保存,其实excel、word、图片等都是可以的,视频不大于这个范围应该也是没有问题的。希望对大家有帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论