• 将文件上传到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”的形式。

  • 相关阅读:
    vijos1198:最佳课题选择
    vijos1071:新年趣事之打牌
    vijos1153:猫狗大战
    bzoj3594: [Scoi2014]方伯伯的玉米田
    bzoj2753: [SCOI2012]滑雪与时间胶囊
    bzoj1923: [Sdoi2010]外星千足虫
    bzoj2783: [JLOI2012]树
    bzoj4590: [Shoi2015]自动刷题机
    bzoj4580: [Usaco2016 Open]248
    bzoj4579: [Usaco2016 Open]Closing the Farm
  • 原文地址:https://www.cnblogs.com/neverstop/p/UploadToBlob.html
Copyright © 2020-2023  润新知