关于access存储和显示图片的问题
我做了一个程序 用access存储图片的 图片存储成功了 但是读取出来的时候字节长度都变成了26 从而显示不出来存储的代码如下:
byte[] byt = ImageToByte(pictureBox1.Image);
ArrayList alInsert = new ArrayList();
string str_Sql = "insert into dt_cpdetail(cpbh,cpmc,danwei,cpms,jszl,ddmj,rgfy,jcjg,photo,lb,ly,bz) values ('" + cpbh + "','" + cpmc +"','" ;
str_Sql = str_Sql + dw + "','" + cpms + "','" + jszl + "','" + ddmj + "','" + rgfy + "','" + jcjg + "','" + @byt + "','" + lb + "','" + ly + "','" +bz+ "')";
alInsert.Add(str_Sql);
clsDataBase cdb =new clsDataBase();
cdb.OpenDB();
if(!cdb.ExecuteSqlTrans(alInsert,false))
{
MessageBox.Show(cdb.Error);
cdb.CloseDB();
}
else
{
MessageBox.Show("保存成功!");
cdb.CloseDB();
}
}
public static byte[] ImageToByte(Image img)
{
byte[] byt = null;
ImageConverter imgCvt = new ImageConverter();
object obj = imgCvt.ConvertTo(img, typeof(byte[]));
byt = (byte[])obj;
return byt;
}
读取:
OleDbDataReader dr = clsDB.QueryRead(Sql);
byte[] mydata ;
if(dr.Read())
{
mydata=((byte[])dr["photo"]);
try
{
// Bitmap myimge = new Bitmap(memStream);
this.pictureBox1.Image = ByteToImage(mydata);
}
catch(Exception err)
{
MessageBox.Show("从数据库读取相片失败!" + err);
}
}
public static Image ByteToImage(byte[] bytImage)
{
Image img = null;
if (bytImage.Length == 0)
{
return img;
}
else
{
ImageConverter imgCvt = new ImageConverter();
object obj = imgCvt.ConvertFrom(bytImage);
img = (Image)obj;
return img;
}
}
请高手指点 --------------------编程问答-------------------- 检查数据库字段设置是否是Ole,保存方法改为
OleDbConnection myConnection = new OleDbConnection(strCnn);--------------------编程问答-------------------- 你怎么能把byt 做为字符串传入呢?这不成了byt.ToString()了吗?
OleDbCommand command = new OleDbCommand("INSERT INTO Person (PersonName,PersonEmail,PersonSex,PersonImageType,PersonImage)" +
"VALUES (@PersonName,@PersonEmail,@PersonSex,@PersonImageType,@PersonImage)", myConnection);
command.Parameters.AddWithValue("@PersonName",TextBox1.Text);
command.Parameters.AddWithValue("@PersonEmail", "mengxianhui@dotnet.aspx.cc");
command.Parameters.AddWithValue("@paramPersonSex", "男");
command.Parameters.AddWithValue("@PersonImageType", fileType);
command.Parameters.AddWithValue("@PersonImage", fileData);
你应该使用Parameter来传递二进制数组数据。 --------------------编程问答-------------------- 感谢两位大大的关注 问题已经解决
补充:.NET技术 , C#