日期:2014-05-18  浏览次数:20729 次

没分了,大家帮帮忙,图片存储问题...
string path=@ "c:\image "; 
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); 
byte[] bytes = new Byte[6000000]; 
fs.Read(bytes, 0, 6000000); 
cmd.Parameters.Add( "@images ", SqlDbType.Image, (int)fs.Length); 
cmd.Parameters[ "@images "].Value = bytes; 

修改原来数据库中存储的图片,我用的是这种方法是通过路径修改的
问题是:如图
当窗体加载时,图片已经在picturebox里面显示,我只想改变左边图片,另外一幅不改变,此时右边图片路径为空,左边选择新的图片,当我点击修改按钮时会报错,说右边的路径不能为空,这是从数据库里面读出来的路径当然为空了,
为了解决这个问题我做了一系列判断,
根据路径和图片来判断,再写几个方法,虽然可以实现功能,但是我面临的问题是要改好多图片,这样的话,方法数量就会成倍的增加,
其时每个方法里面就是更新语句的不同,数据库中原来有图片的如果不修改我就写个新方法,把更新语句里面的字段去掉,不更新
请问大侠们我该怎么办?有什么好的方法?
  if (this._outpath == "" && this.pictureBox1.Image != null)
  {
  if (this._inpath == "" && this.pictureBox2.Image != null)
  {
  dangerDA.dangerfangsheUpdate1();//都不需修改图片
  }
  else
  {
  dangerDA.dangerfangsheUpdate2();//修改内部照片
  }
  }
  else
  {
  if (this._inpath == "" && this.pictureBox2.Image != null)
  {
  dangerDA.dangerfangsheUpdate3();//修改外观图片 
  }
  else
  {
  dangerDA.dangerfangsheUpdate4();//修改两者图片
  }
  }
修改两个图片时我就得写四个方法,三个时就是八个,没有分了,大家帮帮忙

------解决方案--------------------
说实话。。没看懂,但是存图片,你可以用两个字段,一个记录文件路径,一个记录图片(Image类型) ,要判断应该不难把?