zoukankan      html  css  js  c++  java
  • 将文件上传到oracle数据库的Blob字段中

        由于种种原因,需要将文件直接存储到Oracle的Blob字段中,功能已经完成,记录一下实现过程。

        采用winform实现需要的功能,首先在数据库中建表,其中一个字段为Blob类型,怎么创建就不说了。思路很简单,就是文件流读取电脑上的文件,然后通过insert语句将文件的字节流数组存进表中,代码如下:

    //通过Stream读取文件,并转换为byte数组
    Stream stream = File.Open(ChoosedFilePaths[i], FileMode.Open, FileAccess.Read, FileShare.Read); byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; OracleConnection conn = new OracleConnection(constr); OracleParameter param = null; OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "insert into FJG_FILE_MANAGE(NUMBERS,FILE_NAME,FILECONTENT) VALUES('" + attributes.Number + "','" + attributes.FileName + "',:contents,'")"; param = new OracleParameter("contents", OracleType.Blob, buffer.Length); param.Value = buffer; cmd.Parameters.Add(param); try { conn.Open(); cmd.ExecuteNonQuery(); } catch(System.Exception e) { log.Append("上传状态:\t失败!\r\n" + "失败原因:\t" + e1.Message + "\r\n\r\n"); } finally { cmd.Close(); }

    本来采用的是OleDb,后来测试发现不好使,好像是Provider的问题,然后改为OracleClient来进行上传,OracleClient不需要Provider。

    关键是sql语句中Blob字段的参数要写成“:ParameterName”的形式。

  • 相关阅读:
    Hostker云主机
    Orz 终于有了自己的博客地址
    BZOJ 1635: [Usaco2007 Jan]Tallest Cow 最高的牛
    BZOJ 1636: [Usaco2007 Jan]Balanced Lineup
    BZOJ 2252: [2010Beijing wc]矩阵距离
    BZOJ 2253: [2010 Beijing wc]纸箱堆叠
    BZOJ 无数据题集合
    BZOJ 1087: [SCOI2005]互不侵犯King
    BZOJ 3236: [Ahoi2013]作业
    POJ2352:Stars
  • 原文地址:https://www.cnblogs.com/neverstop/p/UploadToBlob.html
Copyright © 2011-2022 走看看