C# 使用资源文件中的图片并上传到SQL Server数据库中

xiaoforward 2015-11-14 01:06:27
大家好:
如何将项目中资源文件中的图片上传到SQL Server数据库中?我在数据库中建立字段Attachment,AttachmentImage,类型分别为image,如果有附件插入到数据库中则插入一个附件的图标(在GridControl中显示,让大家清晰看出该行中是否包含附件,GridControl中显示附件的图标列格式为PictureEdit)但是在将项目资源中的图片转换为二进制文件的过程中搞不明白,望大家给个方法,或者是有更好的思路。
还有,如果插入成功,在窗体加载的时候显示该附件图标,数据该如何进行绑定?
我试了下下面的代码可以直接显示资源文件中的附件图片

pictureEdit1.Image = Properties.Resources.Attachment;

下面的方法可以将本地电脑中的图片转化为byte[],但是项目资源文件中的突变就不知道怎么处理了!
将本地的图片转化为Byte[]:

private static Byte[] ConvertByte(string fileName)
{
FileStream fileStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read);
byte[] byteFile = new byte[fileStream.Length];
fileStream.Read(fileDatas, 0, Convert.ToInt32(fileStream.Length));
fileStream.Close();
return byteFile ;
}

将Byte[]存入数据库中:

private void btnSave_Click(object sender, EventArgs e)
{
DateTime startTime = DateTime.Now;
byte[] fileDatas;
//fileDatas = ConvertByte(txtFileLocation.Text.Trim());
fileDatas = FileToBytes(Properties.Resources.Attachment.ToString());
string sql = "insert into T_Attachment(Attachment) values(@Attachment)";
ExecuteScalar(sql, new SqlParameter("@Attachment", fileDatas));
TimeSpan span = DateTime.Now - startTime;
XtraMessageBox.Show("插入成功!\n"+"共耗时:"+span.TotalSeconds.ToString());

}





谢谢!
不胜感激!
...全文
242 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfy4422 2015-11-16
  • 打赏
  • 举报
回复
变通一下嘛,反正都是转换成二进制,资源文件里的图片有image对象也可以转换成二进制的。至于空值情况,要传DbNull.Value
xiaoforward 2015-11-16
  • 打赏
  • 举报
回复
引用 3 楼 From_TaiWan 的回复:
不论什么文件,都可以存到数据库的varbinary字段里


sql server数据库中对应的字段类型为image,如果byte[] 为空,则如果插入到数据库中?
我直接设置byte[] attachemnt=null,插入数据库提示下图错误:



ExecuteScalar(sql, new SqlParameter("@Attachment", fileDatas));

如果byte[]为空时如何处理?
谢谢!
crystal_lz 2015-11-16
  • 打赏
  • 举报
回复
把图片直接放入数据库真的好吗 - -!。。反正重来值在数据库里面保存图标路径的路过。。
秋的红果实 2015-11-15
  • 打赏
  • 举报
回复
不论什么文件,都可以存到数据库的varbinary字段里
xiaoforward 2015-11-15
  • 打赏
  • 举报
回复
引用 1 楼 shaoerbao 的回复:
网上一找一大堆。。

public byte[] PhotoImageInsert(System.Drawing.Image imgPhoto)
{
//将Image转换成流数据,并保存为byte[] 
MemoryStream mstream = new MemoryStream();
imgPhoto.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] byData = new Byte[mstream.Length];
mstream.Position = 0;
mstream.Read(byData, 0, byData.Length);
mstream.Close();
return byData;
}
谢谢!
runerback 2015-11-15
  • 打赏
  • 举报
回复
网上一找一大堆。。

public byte[] PhotoImageInsert(System.Drawing.Image imgPhoto)
{
//将Image转换成流数据,并保存为byte[] 
MemoryStream mstream = new MemoryStream();
imgPhoto.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] byData = new Byte[mstream.Length];
mstream.Position = 0;
mstream.Read(byData, 0, byData.Length);
mstream.Close();
return byData;
}
书第1,2章分别介绍了使用Visual C#SQL Server开发数据库应用程序的基本知识,第3章~第10章,通过开发8个完整实用的数据库应用程序,系统全面地介绍了用Visual C#SQL Server来进行数据库应用程序开发的各种技术,最后一章总结性地介绍了数据库应用程序的性能优化和安全提高。本书适用于使用Visual C#开发Windows应用程序和Web应用程序的技术人员及编程爱好者,同时也是数据库开发人员的优秀参考书。   .NET平台是Microsoft公司推出的一套开发框架和工具,是软件开发领域非常重要的里程碑。而C#语言是一种功能强大、语法简单、面向对象和类型安全的编程语言,使用Visual C#开发数据库应用程序简单、快捷。SQL Server是一个用于各种信息管理系统、Web应用程序开发的最常用的后台数据库。   本书第1,2章分别介绍了使用Visual C#SQL Server开发数据库应用程序的基本知识,第3章~第10章,通过开发8个完整实用的数据库应用程序,系统全面地介绍了用Visual C#SQL Server来进行数据库应用程序开发的各种技术,最后一章总结性地介绍了数据库应用程序的性能优化和安全提高。   本书适用于使用Visual C#开发Windows应用程序和Web应用程序的技术人员及编程爱好者,同时也是数据库开发人员的优秀参考书。Visual C#+SQL Server数据库开发与实例光盘第二章节

110,534

社区成员

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

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

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