日期:2014-05-18 浏览次数:21104 次
//图片保存到数据库中
public void AddPicture(string lastName, string firstName, string title, DateTime hireDate, int reportsTo, string photoFilePath, string connectionString)
{
byte[] photo = GetPhoto(photoFilePath);
SqlConnection connection = new SqlConnection(connectionString)
SqlCommand command = new SqlCommand("INSERT INTO Employees (LastName, FirstName,Title,HireDate,ReportsTo, Photo) Values(@LastName, @FirstName, @Title, @HireDate, @ReportsTo, @Photo)", connection);
command.Parameters.Add("@LastName", SqlDbType.NVarChar, 20).Value = lastName;
command.Parameters.Add("@FirstName", SqlDbType.NVarChar, 10).Value = firstName;
command.Parameters.Add("@Title", SqlDbType.NVarChar, 30).Value = title;
command.Parameters.Add("@HireDate", SqlDbType.DateTime).Value = hireDate;
command.Parameters.Add("@ReportsTo", SqlDbType.Int).Value = reportsTo;
command.Parameters.Add("@Photo",SqlDbType.Image, photo.Length).Value = photo;
connection.Open();
command.ExecuteNonQuery();
}
// 读二进制流的方法。
public static byte[] GetPhoto(string filePath)
{
FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(stream);
byte[] photo = reader.ReadBytes((int)stream.Length);
reader.Close();
stream.Close();
return photo;
}
//从数据库读图片到picturebox
public void ReaderPicture()
{
SqlConnection conn=new SqlConnectio(@"data source=chenyuming2004VSdotNET;uid=sa;pwd=cym;database=lhf");
conn.Open();
SqlCommand cmd=new SqlCommand("select 照片 from fuser where password='1b'",conn);
SqlDataReader reader=cmd.ExecuteReader();
reader.Read();
MemoryStream buf=new MemoryStream((byte[])reader[0]);
Image image=Image.FromStream(buf,true);
pictureBox1.Image=image;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;//拉伸图片
------解决方案--------------------
一般都不把图片存到数据库里面去,那样数据库负重会太大,可以把图片放到硬盘上,在数据库中仅仅存图片绝对地址就行了。
------解决方案--------------------
个人建议不要把图片存在数据库,从数据库存取图片效率非常低,最好直接存在目录下,然后进行检索。