标题:[求助]请问如何把数据库的图片(二进制文件)导到本地文件夹
只看楼主
qianxiaogang
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2006-12-5
 问题点数:0 回复次数:8 
[求助]请问如何把数据库的图片(二进制文件)导到本地文件夹
高手
请问如何把数据库的图片(二进制文件)导到本地文件夹(c#)谢谢
搜索更多相关主题的帖子: 二进制文件 数据库 
2007-01-15 13:58
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
得分:0 
以前发了好多这样的贴子

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-01-15 14:06
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
得分:0 

using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;

// 下面是从数据库取出图片
try
{
string getPhoto = @"select photo from gch_Customer_Photo where customerID=1234";

DataSet ds = new DataSet();
sqlDataAdapter1 = new SqlDataAdapter(getPhoto, sqlConnection1);
sqlDataAdapter1.Fill(ds);

DataRow row = ds.Tables[0].Rows[0];
byte[] bPhoto = new byte[0];
bPhoto = (byte[])row["photo"];
//int arraySize = bPhoto.GetUpperBound(0);

MemoryStream memstr = new MemoryStream(bPhoto);
pictureBox1.Image = Image.FromStream(memstr, true);

existPhoto==true
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}

// 下面是将图片存入数据库

OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "*.bmp;*.jpg;*.gif|*.bmp;*.jpg;*.gif;*.jpeg";
if(ofd.ShowDialog()==DialogResult.OK)
{
string filePath = ofd.FileName;

FileInfo imageFile = new FileInfo(filePath);
if(imageFile.Length > 204800)
{
Console.WriteLine("图片大小最好不要过大!");
}

pictureBox1.Image = Image.FromFile(filePath);

if(existPhoto==true)
{ //如果之前已有图片,可以考虑删除了旧的先
string deleteOld = @"delete from gch_Customer_Photo where customerID=1234";
SqlCommand sqlcmmd = new SqlCommand(deleteOld,sqlConnection1);
sqlcmmd.ExecuteNonQuery();
}

string getAllPhotos = @"select customerID, photo from gch_Customer_Photo";

DataSet ds = new DataSet();
sqlDataAdapter1 = new SqlDataAdapter(getAllPhotos,sqlConnection1);
sqlDataAdapter1.MissingSchemaAction = MissingSchemaAction.AddWithKey;

FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Read);

byte[] bPhoto= new byte[fs.Length];
fs.Read(bPhoto, 0, System.Convert.ToInt32(fs.Length));
fs.Close();

sqlDataAdapter1.Fill(ds);

DataRow oneRow = ds.Tables[0].NewRow();
oneRow["customerID"] = 1234;
oneRow["photo"] = bPhoto;
ds.Tables[0].Rows.Add(oneRow);

sqlDataAdapter1.Update(ds);

Console.WriteLine("图片入库成功!");
}


XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-01-15 14:07
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
得分:0 
这是BBS里面一位兄弟的代码

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-01-15 14:07
qianxiaogang
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2006-12-5
得分:0 

谢谢蓝冰,我想导到本地文件夹,还缺一点,谢谢你的帮助

2007-01-15 14:21
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
得分:0 
得到BMP文件数据就简单了。保存到文件有这样一段代码
map.save(string filename)还有很多重载函数,你去实验一下。
map是Bitmap类型的变量

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-01-15 14:40
qianxiaogang
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2006-12-5
得分:0 

能详细一点吗?谢谢楼主了,小弟新手

2007-01-15 14:45
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
得分:0 
pictureBox1.Image = Image.FromStream(memstr, true);
这是上面从数据库得到IMAGE的一句话,
可以这样写
Bitmap map=(Bitmap)Image.FromStream(memstr, true);//得到数据
map.save("c:\\kk.bmp");//保存数据

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-01-15 15:21
qianxiaogang
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2006-12-5
得分:0 

谢谢楼主,解决了

2007-01-15 16:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-116077-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.432112 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved