C#Winform在数据库中读取图片文件和上传数据文件
2016-02-24 23:08
537 查看
读取数据库图片字段方法:
protected void LoadPicture() { Image img = null; if (this.gl_studentid.Length==0) { img = Image.FromFile("NoPicture.png");//如果数据库中没有图片则加载NoPicture.png这张图片 this.pictureBox1.Image = img; return; } string sql = "select * from student where studentid='" + gl_studentid + "'"; DataTable dt = DBUtil.GetData(sql); if (dt.Rows.Count>0) { try //用try 做判断 ,因为转化过程可能出错 { byte[] bytes = (byte[])dt.Rows[0]["img"]; MemoryStream ms = new MemoryStream(bytes); //核心方法 将图片加载到内存流中 this.pictureBox1.Image = Image.FromStream(ms); } catch (Exception) { img = Image.FromFile("NoPicture.png"); this.pictureBox1.Image=img; } } }向数据库中上传图片文件方法:(这里方便采用修改数据库的图片文件,原理相同)
private void btnSubmit_Click(object sender, EventArgs e) { string filePath = this.txtFilePath.Text.ToString(); if (filePath.Length==0) { MessageBox.Show("请选择图片!"); return; } if (gl_studentid.Length==0) { MessageBox.Show("请选择要修改的记录!"); } string sql = "update student set img=@img where studentid=@studentid"; SqlParameter p1 = new SqlParameter("@img", SqlDbType.Image); FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); byte[] bytes = new byte[fs.Length]; fs.Seek(0, SeekOrigin.Begin); //定义开始读文件的位置,为0位置 SeekOrigin.Begin意为设置0为一个开始标志位 fs.Read(bytes, 0, (int)fs.Length); p1.Value = bytes; SqlParameter p2 = new SqlParameter("@studentid", gl_studentid); using (SqlConnection conn=new SqlConnection(sqlconn)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = sql; cmd.Parameters.Add(p1); cmd.Parameters.Add(p2); cmd.ExecuteNonQuery(); fs.Close(); fs.Dispose(); MessageBox.Show("图片修改成功!"); this.LoadPicture(); } }
相关文章推荐
- 【MFC-9】VS2010/MFC基于对话框的SQlite3数据库编程
- Python操作Mysql实例代码
- MySQL的两种存储引擎storage engine特点和对比
- C#Winform向数据库中导入.txt或者.CSV文件的数据
- C#Winform 在DataGridView(SQL Server)中下载和上传文件方法
- 关于sql中的distinct和top合用
- mssql性能优化
- Memcached 监控
- MySQL存储引擎--MyISAM与InnoDB区别
- Memcached 笔记
- 修改oracle database中user的密码遇到ORA-28003和ORA-20001
- JPA Hibernate 和数据库 的 锁机制
- SQL Server 高性能写入的一些经验总结
- redis 数据类型详解 以及 redis适用场景场合
- 数据库_MySQL_SQL语句的组装顺序 和 GROUP BY的SELECT语句中显示COUNT()为0的结果
- 关于Redis中的serverCron
- Oracle 11g 64位/32位官方版附详细的安装图解教程
- ehcache memcache redis 三大缓存男高音
- jdbc连接数据库工具类
- C++ 自制Redis数据库(十三) 持久化AOF日志模块测试完毕