读书人

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

发布时间: 2012-09-16 17:33:17 作者: rapoo

请问一个数据库存图片的问题
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?


[解决办法]
SqlDbType.Image本身就是二进制的,类型一样的,数据库中一般不用image了,用varbinary(max)就好了


[解决办法]
SqlDbType.Image 存进库都一样都是 varbinary(max)
[解决办法]
1、你可以参考。Net中sql类型对应,数据库的image就是二进制,对应byte[]

2、大部分图片格式以及压缩了,除非你保存的是bmp之类的格式,否则压缩基本无效,不改变大小。
[解决办法]
我之前做的时候,如果图片太大的话,我会把图片放到一个Resource文件中,数据库里存放图片路径,只是不知道这种方法在性能上好不好。

读书人网 >C#

热点推荐