以下是代码,运行无任何错误,控件名均已检查.
测试行有二进制记录可输出照片.
SqlConnection sqlConnection = new SqlConnection("Server=(Local);Database='PharmacySystem';Integrated Security=false;UID='sa';Password='2wsx@WSX';");
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand("select * from MedicineInformation ;");
sqlCommand.Connection = sqlConnection; //将SQL命令的连接属性指向SQL连接;
SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); //调用SQL命令的方法ExecuteReader来执行命令,并获取数据阅读器;
byte[] photoBytes = null; //声明字节数组,用于保存照片数据;但先赋予空值;
if (sqlDataReader.Read()) //若数据阅读器成功读取到下一条记录(首次查询则表示第一条记录);
{
photoBytes =
(sqlDataReader["Label"] == DBNull.Value ? null : (byte[])sqlDataReader["Label"]); //根据照片是否为数据库空值,分别将空值、转为字节数组的照片数据赋予事先声明的字节数组;
}
sqlDataReader.Close(); //关闭数据阅读器(同时关闭连接);
if (photoBytes != null) //若学生的照片非空;
{
MemoryStream memoryStream = new MemoryStream(photoBytes); //声明并实例化内存流,用于读取照片的字节数据;
Pb_label.Image = Image.FromStream(memoryStream); //调用图像的静态方法FromStream从内存流中读取图像,并赋予图像框;
}