C 读写SQL数据库Image字段
更新时间:2023-05-28 21:47:01 阅读量: 实用文档 文档下载
C# 读写SQL数据库Image字段
C# 读写SQL数据库Image字段2009-01-31 19:27 在用C#对数据库Image字段读写过程中,遇到了一些问题,在网上搜索发现此类问题比较多,但是很少提供比较全面的答案,在此我从对Image字段读写文件和读写图片两个方面谈谈我的认识.
在讲主题之前,我应该阐明一点,数据库的Image字段保存的是字节,所以写入数据库Image字段和从数据库Image字段读取的内容都应该为字节.
1、数据库Image字段读写文件
写文件:写文件的过程为将文件以流文件形式打开并将内容读取到一个byte数组,然后将此byte数组写入数据库的Image字段。
源码:
FileInfo finfo=new FileInfo("文件名"); //绝对路径
if(finfo.Exists)
{
SqlConnection conn=new SqlConnection("连接字符串");
SqlCommand InsertCommand=new SqlCommand();
InsertCommand.Connection=conn;
mandText="Insert into 表名(Image字段名) values(@Content)";
InsertCommand.Parameters.Add("@Content",SqlDbType.Image,(int)finfo.Length,"Image字段名"); //注意,此处参数Size为写入的字节数
//读取文件内容,写入byte数组
byte[] content=new byte[finfo.Length];
FileStream stream=finfo.OpenRead();
stream.Read(content,0,content.Length);
stream.Close();
InsertCommand.Parameters["@Content"].Value=content; //为参数赋值 try
{
conn.Open();
InsertCommand.ExcuteNonQuery();
}
finally
{
conn.Close();
}
}
读文件:读文件的过程为从数据库的Image字段读取内容保存到byte数组,然后将此byte数组以文件流形式写入文件。
C# 读写SQL数据库Image字段
源码:
byte[] content;
SqlConnetion conn=new SqlConnection("连接字符串");
SqlDataAdapter da=new SqlDataAdapter("Select Image字段名 from 表名",conn); DataSet ds=new DataSet();
da.Fill(da,"word");
DataRow dr=ds.Tables["word"].Rows[0]; //将读取的第一行内容保存到dr
content=(byte[])dr["Image字段名"];
int ArraySize=content.GetUpperBound(0);
FileStream stream=new FileStream("文件名",FileMode.OpenOrCreate,FileAccess.Write);
stream.Write(content,0,ArraySize);
stream.Close();
2、数据库Image字段读写图片
绑定到控件的方式:
通 过将Image字段绑定到PictureBox实现。文件中我提供了一个实例,要正常运行需要在Northwind中添加数据库表Employees,数 据库表的结构为EmployeeID Int(4) 自动增 长,FirstName nvarchar(10),LastName nvarchar(20),Photo image(16) null。
直接用SqlCommand实现:
其 实把握住Image字段存的是byte类型数据,用SqlCommand实现添加、修改就很简单了,跟文本的区别就是在读出的时候需要将byte类型数据 转化为Image图片,在写入时需要将Image图片以流的形式转为为byte数组,然后再将byte数组保存到Image字段。 实例:
comm = "Insert into MyEmployees(FirstName,LastName,Photo) values(@FName,@LName,@Photo)";
SqlCommand command=new SqlCommand(comm);
command.Connection = conn;
//创建Parameter
command.Parameters.Add("@FName",SqlDbType.NVarChar);
command.Parameters[0].Value = textBox1.Text;
command.Parameters.Add("@LName", SqlDbType.NVarChar);
command.Parameters[1].Value = textBox2.Text;
command.Parameters.Add("@Photo",SqlDbType.Image);
command.Parameters[2].Value = imgByte;
其中imgByte为Byte数组,通过FileStream的Read填充的byte数据。
DataRow dr = dt.Tables[0].Rows[0];
byte[] br = null;
MemoryStream ms = new MemoryStream();
if (dr["image1"].ToString() != "")
C# 读写SQL数据库Image字段
{
br = (byte[])dr["image1"];
ms = new MemoryStream(br, 0, br.Length);
this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; this.pictureBox1.Image = Image.FromStream(ms);
ms.Close();
}
else
{
this.pictureBox1.Image = null;
}
正在阅读:
C 读写SQL数据库Image字段05-28
关于我国出境旅游者不文明行为的思考04-11
小学一年级语文朗读训练随笔05-30
湖北省省级骨干教师名单(4017人)03-12
除颤仪的考试答案08-31
2022年四川高考446分能报什么大学 446分能上哪些院校03-29
《新闻采访写作》简答题doc10-04
中考历史复习 中国近代史 课后练习07 列强的侵略与中国人民的抗04-15
2017年色纺纱市场分析报告12-16
CDR笔记03-25
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 字段
- 读写
- 数据库
- Image
- SQL
- 论社会保险基金财务会计的信息化
- 国美电器发展电子商务战略规划
- 2013-2018年中国电热水器控制板行业投资前景分析预测报告
- 第十八章:维生素类药
- 发改委力促民资_从医_移动医疗产业抢滩商机
- 幼儿园健康领域阶段目标和备选内容参考
- 德国_法国司法制度之比较
- 菩萨蛮&183;小山重叠金明灭
- 中国汽车流通协会二手车鉴定评估作业表单
- 怎样能使电脑上网及操作速度快一些
- 新标准韩国语-初级一-单词汇总
- 三星智力快车题目
- 基于主运动分析的野外视觉侦察系统――运动目标检测、跟踪及全景图的生成
- 工程材料及成形工艺基础
- 51单片机usart通信程序(有CRC校验)
- 矿井大面积停电专项应急预案
- 2000-2020年A市与B市空气质量分析及其与气象要素的关系
- 小学语文部编版五年级下册第一单元测试卷
- 高二主题班会实录
- 解析运用现代信息技术优化高中历史教学