C#
 
OracleCommand cmd = myConnection.CreateCommand();
cmd.CommandText = "INSERT INTO PUB_PERSON(EMPPICTURE)VALUES(:EMPPICTURE);";
OracleParameter oraParmm = cmd.Parameters.Add(:EMPPICTURE, OracleType.Blob);
oraParmm.Value = System.Convert.FromBase64String(drPic["colValue"].ToString());
cmd.ExecuteNonQuery();现在的问题是图片大小为109K,执行的时候就提示 ORA-01460: 转换请求无法实现或不合理,但是我大小为15K的就可以保存成功,是什么原因呢?BLOB不是可以保存4G大的东西吗?

解决方案 »

  1.   

    oraParmm.Value = System.Convert.FromBase64String(drPic["colValue"].ToString());
    上面这句,你确定可以支持109K的数据吗?
      

  2.   

    可以的,他是从System.Convert.ToBase64String(bytes);转化过来的。
    转到业务层的时候把他转成string,用的时候再转化回去。
      

  3.   

    blob是能存最大4G,但是:
    你确定这个类型转换FromBase64String能接收超过15k或者32可的值吗?
      

  4.   

    string类型最大只能支持32k的传递
      

  5.   


    问题应该没有在这吧。
    下面是官方对FromBase64String函数的说明,没有说什么限制。
    http://msdn.microsoft.com/zh-cn/library/system.convert.frombase64string(v=vs.85).aspx
      

  6.   


    那怎么运载这个大的图片,然后把他赋给oracle参数呢
      

  7.   

    感觉不是这个问题,因为刚才调试跟了下,109K大小值的图片已经传给参数了。是不是跟oracle的配置文件有关?