先将图片用二进制的方式存入数据库(自己写的sql语句,不通过datagridview保存)
然后将二进制图片反序列化时不能显示存入的图片(通过datagridview 取图片)
这样怎么能正常显示数据库图片呢?谢谢老师了
读者朋友:
您好,使用下面代码:
向数据表中添加二进制信息
01 private bool AddInfo(string strName, string strImage)
02 {
03 sqlcon = new SqlConnection(strCon); //创建数据库连接对象
04 FileStream FStream = new FileStream(//创建文件流对象
05 strImage, FileMode.Open, FileAccess.Read);
06 BinaryReader BReader = new BinaryReader(FStream); //创建二进制流对象
07 byte[] byteImage = BReader.ReadBytes((int)FStream.Length); //得到字节数组
08 SqlCommand sqlcmd = new SqlCommand( //创建命令对象
09 "insert into tb_Image(name,photo) values(@name,@photo)", sqlcon);
10 sqlcmd.Parameters.Add("@name", //添加参数并赋值
11 SqlDbType.VarChar, 50).Value = strName;
12 sqlcmd.Parameters.Add("@photo", //添加参数并赋值
13 SqlDbType.Image).Value = byteImage;
14 sqlcon.Open(); //打开数据库连接
15 sqlcmd.ExecuteNonQuery();//执行SQL语句
16 sqlcon.Close(); //关闭数据库连接
17 return true; //方法返回布尔值
18 }
显示数据库中存储的二进制图像:
01 //使用数据库中存储的二进制图片实例化内存数据流
02 MemoryStream MStream = new MemoryStream((byte[])myds.Tables[0].Rows[0][2]);
pictureBox1.Image = Image.FromStream(MStream); //显示小禾斗 发表于2018-05-14 14:03
读者朋友:
您好,使用下面代码:
向数据表中添加二进制信息
01 private bool AddInfo(string strName, string strImage)
02 {
03 sqlcon = new SqlConnection(strCon); //创建数据库连接对象
04 FileStream FStream = new FileStream(//创建文件流对象
05 strImage, FileMode.Open, FileAccess.Read);
06 BinaryReader BReader = new BinaryReader(FStream); //创建二进制流对象
07 byte[] byteImage = BReader.ReadBytes((int)FStream.Length); //得到字节数组
08 SqlCommand sqlcmd = new SqlCommand( //创建命令对象
09 "insert into tb_Image(name,photo) values(@name,@photo)", sqlcon);
10 sqlcmd.Parameters.Add("@name", //添加参数并赋值
11 SqlDbType.VarChar, 50).Value = strName;
12 sqlcmd.Parameters.Add("@photo", //添加参数并赋值
13 SqlDbType.Image).Value = byteImage;
14 sqlcon.Open(); //打开数据库连接
15 sqlcmd.ExecuteNonQuery();//执行SQL语句
16 sqlcon.Close(); //关闭数据库连接
17 return true; //方法返回布尔值
18 }
显示数据库中存储的二进制图像:
01 //使用数据库中存储的二进制图片实例化内存数据流
02 MemoryStream MStream = new MemoryStream((byte[])myds.Tables[0].Rows[0][2]);
pictureBox1.Image = Image.FromStream(MStream); //显示老师您好,我还是不很明白
1)第一段代码应该是一种方法吧,但是应该怎么引用呢?我现在是直接放在窗体设计的代码里,试着引用但是都不对。
2)显示储存时的代码里myds应该修改成什么?
3)我现在上传照片的方法是这样,和您讲的方法中的创建文件流会有影响吗?
我也是第一次用C#做程序,希望老师能讲再详细些,麻烦老师了!