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”的形式。

  • 相关阅读:
    Python3爬取前程无忧数据分析工作并存储到MySQL
    MySQL操作数据库和表的基本语句(DDL
    MyBatis的增删改查操作
    指定方向或者位置移动
    AI-Tank
    转载人家写的CURSOR
    Ajax学习整理笔记
    全面解析注解
    java调用存储过程mysql
    JAVA如何调用mysql写的存储过程
  • 原文地址:https://www.cnblogs.com/neverstop/p/UploadToBlob.html
Copyright © 2011-2022 走看看