存取图片时先读取图片,我们正常情况下是用Image控件读取图片来显示,在读了Image.image中图片时要把读取的数据放入stream中如下:
MemoryStream msImg = new MemoryStream();
Image.image.Save(msImg ,//图片格式//)
用以下得到图片格式,在读取文件中可以通过FileInfo fi = new FileInfo(文件)得到打开的文件信息fi.Extension.ToString()得到文件的格式,fi.Name.ToString()得到文件的名称,fi.Length得到文件的大小.
在此fi.Extension.ToString()得到的只是.txt .exl .jpg的,而在上面的读取图片放入流中的图片格式如下所示:
switch (strVision.ToUpper())
{
case ".JPG":
return ImageFormat.Jpeg;
break;
case ".GIF":
return ImageFormat.Gif;
break;
case ".BMP":
return ImageFormat.Bmp;
break;
case ".ICON":
return ImageFormat.Icon;
break;
case ".PNG":
return ImageFormat.Png;
break;
default:
return null;
break;
}
/// 新增或修改有图片的SQL
/// </summary>
/// <param name="strSQL">传入组好的SQL语名其中图片值用占位符表示</param>
/// <param name="strFeildName">数据库中存储图片的字段名称</param>
/// <param name="Img">传入Image属性</param>
/// <returns></returns>
public int ExecutImgSql(string strSQL,string strFeildName, MemoryStream Img)
{
int intNum = 0;
try
{
OleDbConnection Conn = new OleDbConnection(ConnStr);
Conn.Open();
OleDbCommand Cmd = new OleDbCommand(strSQL, Conn);
Cmd.Parameters.Add(strFeildName, OleDbType.Binary);
Cmd.Parameters[strFeildName].Value = Img.ToArray();//MemoryStream 转成数组存入
intNum = Cmd.ExecuteNonQuery();
Conn.Close();
}
catch (OleDbException e)
{
}
return intNum;
}
注意这里是通过Cmd.Parameters.Add(strFeildName, OleDbType.Binary)添加相对应的字段及字段类型,再通过Cmd.Parameters[strFeildName].Value 把值符过去.图片存在数据库中是以byte[]存入的,在ACCESS中应用OleDbType.Binary对应.再些要把 MemoryStream Img转化为数组