CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

1000分求高手帮忙!!!!关于vc#操作oracle数据库bolb字段问题,谢谢

楼主zwh23(zwh23)2005-02-04 11:42:43 在 .NET技术 / C# 提问

我要做一个c/s程序客户端自动升级程序,原理很简单将将需要更新的程序(如:   exe、dll)写入blob字段中,客户端读取其中的内容写入本机。可是现在遇到一个问题,从数据库取下来的程序总是少一个字节,希望各位大哥能帮助我,问题解决1000分送上!!  
  以下是我的程序  
  try  
  {  
  string   constr   =   "User   Id=a;Password=a;Data   Source=orcl";  
   
  OracleConnection   con   =   new   OracleConnection(constr);  
  con.Open();  
   
  String   sourceLoc     =   this.textBox1.Text;  
  string[]   fileNameArr=sourceLoc.Split('\\');  
  string   fileName=fileNameArr[fileNameArr.Length-1];  
   
  FileStream   fs   =   new   FileStream(sourceLoc,   FileMode.Open,FileAccess.Read);  
  byte[]   ImageData   =   new   byte[fs.Length];  
  fs.Read(ImageData,0,System.Convert.ToInt32(fs.Length));  
  fs.Close();  
   
  String   block   =   "   BEGIN   "   +  
  "   INSERT   INTO   UPDATE_VERSION   (ID,UPDATE_FILE,FILE_NAME)   VALUES   (4,   :1,'"+fileName+"');   "   +  
  "   END;   ";  
  OracleCommand   cmd   =   new   OracleCommand();  
  cmd.CommandText   =   block;  
  cmd.Connection   =   con;  
  cmd.CommandType   =   CommandType.Text;  
  OracleParameter   param   =   cmd.Parameters.Add("blobtodb",   OracleDbType.Blob);  
  param.Direction   =   ParameterDirection.Input;  
  param.Value   =   ImageData;  
  cmd.ExecuteNonQuery();  
  }  
  catch(Oracle.DataAccess.Client.OracleException   ee)  
  {  
  MessageBox.Show(ee.ToString());  
  }  
  以下是我的下载程序  
  try  
  {  
  string   constr   =   "User   Id=codelife;Password=810106;Data   Source=orcl";  
  OracleConnection   conn   =   new   OracleConnection(constr);  
  conn.Open();  
  String   DestinationLoc   =   Application.StartupPath   +   "\\"   +   name;  
   
  String   block   =   "   BEGIN   "   +  
  "   SELECT   UPDATE_FILE   into   :1   from   UPDATE_VERSION   WHERE   id   =   "   +   id   +   ";   "   +  
  "   END;   ";  
  OracleCommand   cmd   =   new   OracleCommand();  
  cmd.CommandText   =   block;  
  cmd.Connection   =   conn;  
  cmd.CommandType   =   CommandType.Text;  
  OracleParameter   param2   =   cmd.Parameters.Add("blobfromdb",   OracleDbType.Blob);  
  param2.Direction   =   ParameterDirection.Output;  
  cmd.ExecuteNonQuery();  
  byte[]   byteData   =   new   byte[0];  
  byteData   =   (byte[])((OracleBlob)(cmd.Parameters[0].Value)).Value;  
  int   ArraySize   =   new   int();  
  ArraySize   =   byteData.GetUpperBound(0);  
  FileStream   fs1   =   new   FileStream(@DestinationLoc,   FileMode.OpenOrCreate,   FileAccess.Write);  
  fs1.Write(byteData,   0,ArraySize);  
  fs1.Close();  
   
  }  
  catch(Oracle.DataAccess.Client.OracleException   e)  
  {  
  }  
   
  我的测试数据库在windows和linux下都不行windows的oracle版本是9i,linux下是8.1.7 问题点数:100、回复次数:5Top

1 楼LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)回复于 2005-02-04 11:44:39 得分 50

mark再看Top

2 楼jialiang(≈≈逆水行舟≈≈)回复于 2005-02-04 12:33:10 得分 50

upTop

3 楼zwh23(zwh23)回复于 2005-02-04 12:50:15 得分 0

好了,问题自己解决,揭贴Top

4 楼zwh23(zwh23)回复于 2005-02-04 12:50:58 得分 0

谢谢各位给我的灵感,不过鉴于自己解决的问题,只能送上100分给各位了Top

5 楼wsxcy66668888()回复于 2005-03-03 16:13:12 得分 0

怎么解决的,可以说一下吗?谢谢你Top

相关问题

  • 与Oracle连接时,怎样添加Bolb,Clob字段?急!!!!!
  • 在VC中,用ADO怎么向ORACLE 8i的DATE型字段写一个值
  • 在VC++里如何通过ADO访问ORACLE里的BLOB字段内容?
  • 用VC填写Oracle中的一个BLOB字段的内容,出现问题。
  • 急!vc使用ADO访问ORACLE数据库,怎样读写BLOB字段?
  • Oracle中的自增字段
  • Oracle的TimeStamp型字段?
  • 在Oracle中写BLOB字段
  • oracle日期字段问题
  • VC处理blob字段

关键词

  • filenamearr
  • sourceloc
  • imagedata
  • 程序
  • fs
  • cmd
  • 问题
  • con
  • length
  • param

得分解答快速导航

  • 帖主:zwh23
  • LoveCherry
  • jialiang

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo