请问一个数据库存图片的问题

d2vv244 2012-08-29 09:12:16
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP";
if(openFileDialog1.ShowDialog()==DialogResult.OK)
{
string fullpath =openFileDialog1.FileName;//文件路径
FileStream fs = new FileStream(fullpath, FileMode.Open);
byte[] imagebytes =new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));
SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05");
con.Open();
SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con);
com.Parameters.Add("ImageList", SqlDbType.Image);
com.Parameters["ImageList"].Value = imagebytes;
com.ExecuteNonQuery();
con.Close();
}
}

我主要问一下,

1:红色部分,sql中参数的数据类型是SqlDbType.Image类型,而设置Value值的时候,却是byte[]字节数组,这怎么说得通呢?数据类型都不一样
2:如果把一个1M大小的图片,压缩成二进制,存进数据库,该数据所占的空间有多大呢?是不是也是1M?
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyu1989qinger 2012-08-29
  • 打赏
  • 举报
回复
我之前做的时候,如果图片太大的话,我会把图片放到一个Resource文件中,数据库里存放图片路径,只是不知道这种方法在性能上好不好。
isjoe 2012-08-29
  • 打赏
  • 举报
回复
1、你可以参考。Net中sql类型对应,数据库的image就是二进制,对应byte[]

2、大部分图片格式以及压缩了,除非你保存的是bmp之类的格式,否则压缩基本无效,不改变大小。
杰拉尔 2012-08-29
  • 打赏
  • 举报
回复
SqlDbType.Image 存进库都一样都是 varbinary(max)
人生无悔 2012-08-29
  • 打赏
  • 举报
回复
SqlDbType.Image本身就是二进制的,类型一样的,数据库中一般不用image了,用varbinary(max)就好了

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧