//选择图片,并显示
private void menuItem4_Click(object sender, System.EventArgs e)
{
dlgAddPic.Filter="JPEG 图像文件(*.jpg;*.jpeg)|*.jpg;*.jpeg|Windows 位图文件(*.bmp)|*.bmp|GIF 计算机服务(*.gif)|*.gif|所有文件(*.*)|*.*";
if (dlgAddPic.ShowDialog()==DialogResult.OK)
{
if (picSmall.Image != null)
{
picSmall.Image.Dispose();
picBig.Image.Dispose();
picSmall.Image=null;
picBig.Image=null;
}
picSmall.Image=Image.FromFile(dlgAddPic.FileName);
picBig.Image=Image.FromFile(dlgAddPic.FileName);
txtPicName.Text=dlgAddPic.FileName.Substring(dlgAddPic.FileName.LastIndexOf(@"\",dlgAddPic.FileName.Length,dlgAddPic.FileName.Length)+1);
}
}
//保存,添加到数据库
private void menuItem15_Click(object sender, System.EventArgs e)
{
if (cboPicType.Text=="") 
{
MessageBox.Show("请确定图片类别!");
return;
}

MemoryStream mStream =new MemoryStream();
try
{
if (txtPicName.Text.Length<5) return;
switch(txtPicName.Text.Substring(txtPicName.Text.Length-3).ToUpper())
{
case "JPG":
case "PEG":
picBig.Image.Save(mStream,ImageFormat.Jpeg);
picBig.Image.Save()
break;
case "GIF":
picBig.Image.Save(mStream,ImageFormat.Gif);
break;
case "BMP":
picBig.Image.Save(mStream,ImageFormat.Bmp);
break;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
byte[] picData=new byte[mStream.Length];
mStream.Position=0;
mStream.Read(picData,0,Convert.ToInt32(mStream.Length));
mStream.Close();
mStream=null;
string strInsertSQL="insert into "+cboPicType.Text+" (NAME , PIC) values('"+txtPicName.Text+picData.Length.ToString()+"' ,@pic)";
cmd.CommandText=strInsertSQL;
OleDbParameter paramPic=new OleDbParameter("@pic",OleDbType.VarBinary);
paramPic.SourceColumn="PIC";
paramPic.Value=picData;
cmd.Parameters.Add(paramPic);
try
{
cmd.ExecuteNonQuery(); MessageBox.Show("添加成功!");
string strSQL="select top 1 ID from "+cboPicType.Text+" order by ID desc";
cmd.CommandText=strSQL;
cboPicID.Items.Add(cmd.ExecuteScalar().ToString());
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}}
选择图片并显示没有问题,但是每次保存的都是最开始显示的那张图片.就是说不管我添加多少张不同图片,但保存到库中的全都是第一张。我跟踪以后发现 picData.LENGTH改变了啊,为什么保存的始终是第一张那?没道理啊~
哪位帮忙看看