SQLServer数据库中图片的存入和读取

csts_005 2011-03-25 10:50:21
SQLServer数据库中图片的存入和读取。

1、数据库中存放图片的字段是什么类型的?

2、把图像转化为二进制流存入数据库的方法?

3、把二进制流转化图片的方法?
...全文
855 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
honghong_vip 2012-10-10
  • 打赏
  • 举报
回复
谢谢各位的指导
sea_star666 2012-03-01
  • 打赏
  • 举报
回复
谢谢,希望有用
sunfor 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 lfqsy 的回复:]
围观,如果用得多,二进制存到数据库会越来越多,查询的时候不晓得啥子效果
[/Quote]
如果怕数据多影响速度,可独立建一新表,只有编号+图像两个字段,平时只用员工表,只有查员工图像时打开图像表就不会有影响了。
Daqing 2011-03-29
  • 打赏
  • 举报
回复
1.2000 image ,2005是binary或者varbinary
2.FileStream-fs-> BinaryReader br = new BinaryReader(fs)或者fs.Read(byt[],0,length)
3.MemoryStream ms=new MemoryStream(datatable["图片"])--Image im=Image.FromStream(ms);
艾莎云 2011-03-29
  • 打赏
  • 举报
回复
貌似可以打包吧 ,我记得Access也是这样,存储图片就是直接用
xrongzhen 2011-03-29
  • 打赏
  • 举报
回复
SQLServer数据库中图片的存入和读取。

1、数据库中存放图片的字段是什么类型的?
image

2、把图像转化为二进制流存入数据库的方法?
byte[]数组 可以用File.ReadAllBytes()或FileStream的Read()等方法
然后Insert Into table value(@image)...

3、把二进制流转化图片的方法?
同样的读入byte[] 实例MemoryStream 然后用FromStream()
guoyanhong1111 2011-03-29
  • 打赏
  • 举报
回复
1、图片存入数据库
本实例主要介绍如何将图片存入数据库。将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类、BinaryReader把图片读成字节的形式,赋给一个字节数组,然后用ADO.SqlCommand对象的ExecuteNonQuery()方法来把数据保存到数据库中。主要代码如下:
/// <summary>
/// 将图片以二进制读入数据库
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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);database=zy_info;integrated security=true");
con.Open();
SqlCommand com = new SqlCommand("insert into tb_text values(@guatu)", con);
//"update yijing set guatu='"+
com.Parameters.Add("guatu", SqlDbType.Image);
com.Parameters["guatu"].Value = imagebytes;
com.ExecuteNonQuery();
con.Close();
MemoryStream ms = new MemoryStream(imagebytes);
Bitmap bmpt = new Bitmap(ms);
this.pictureBox1.Image = bmpt;
}
}


2、图片读出数据库
/// <summary>
/// 读出二进制图片数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
byte[] imagebytes = null;
//打开数据库
SqlConnection con = new SqlConnection("server=(local);database=zy_info;integrated security=true");
con.Open();
SqlCommand com = new SqlCommand("select top 1* from tb_text", con);
SqlDataReader dr = com.ExecuteReader();
while (dr.Read())
{
imagebytes = (byte[])dr["guatu"];
}
dr.Close();
com.Clone();
con.Close();
MemoryStream ms = new MemoryStream(imagebytes);
Bitmap bmpt = new Bitmap(ms);
this.pictureBox1.Image = bmpt;
//dr.Close();
//com.Clone();
//con.Close();
}
这个可以成功的!
lfqsy 2011-03-29
  • 打赏
  • 举报
回复
围观,如果用得多,二进制存到数据库会越来越多,查询的时候不晓得啥子效果
zhong6739168 2011-03-29
  • 打赏
  • 举报
回复
我有关于数据库存储和读取图片的代码!http://download.csdn.net/source/3137639
zzm1122 2011-03-29
  • 打赏
  • 举报
回复
刚做过这个模块、其实也不难 有需要找我要把
xiongxyt2 2011-03-26
  • 打赏
  • 举报
回复
sswp7 2011-03-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xiaoqiu1234 的回复:]

顺便请教下各位大侠,如果是考勤机和二代身份证,读出来的头像图片是怎样存储的,存储在本地的什么位置???


你用的什么写的 C# winfrom程序???

[/Quote]

猜它用的VS2008,如果是用VS2008跟“如果是考勤机和二代身份证,读出来的头像图片是怎样存储的,存储在本地的什么位置???”问题有多大关系吗? 对了,观望这个问题。。。
cjh200102 2011-03-26
  • 打赏
  • 举报
回复
各有所长。那种都行,只要合适。
郗晓勇 2011-03-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 leroncheung 的回复:]

引用 3 楼 fangxinggood 的回复:
1. 数据库存放的是 Image 类型
2. 用 byte[] data = File.ReadAllBytes(图片路径)
3. byte[] -> MemoryStream -> Bitmap.FromStream


二进制存储更安全。
[/Quote]
必须的 顶一个
leroncheung 2011-03-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fangxinggood 的回复:]
1. 数据库存放的是 Image 类型
2. 用 byte[] data = File.ReadAllBytes(图片路径)
3. byte[] -> MemoryStream -> Bitmap.FromStream
[/Quote]

二进制存储更安全。

BEIDOUJS 2011-03-26
  • 打赏
  • 举报
回复
过程重要,结果更重要![Quote=引用楼主 csts_005 的回复:]
SQLServer数据库中图片的存入和读取。

1、数据库中存放图片的字段是什么类型的?

2、把图像转化为二进制流存入数据库的方法?

3、把二进制流转化图片的方法?
[/Quote]
BEIDOUJS 2011-03-26
  • 打赏
  • 举报
回复
我也是这样做的,这样不仅简单方便还便于管理。[Quote=引用 5 楼 ttiimm11 的回复:]
我一般都说把图片存在本地的文件夹内,然后在数据库里存路径
[/Quote]
xiaoqiu1234 2011-03-26
  • 打赏
  • 举报
回复
顺便请教下各位大侠,如果是考勤机和二代身份证,读出来的头像图片是怎样存储的,存储在本地的什么位置???


你用的什么写的 C# winfrom程序???


xiaoqiu1234 2011-03-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ttiimm11 的回复:]
我一般都说把图片存在本地的文件夹内,然后在数据库里存路径
[/Quote]
楼上说的是对的,也是最简单方便的方法,只存放路径,string类型就可以了
ttiimm11 2011-03-26
  • 打赏
  • 举报
回复
我一般都说把图片存在本地的文件夹内,然后在数据库里存路径
加载更多回复(4)

111,098

社区成员

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

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

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