博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#数据库保存图片或照片字段
阅读量:6258 次
发布时间:2019-06-22

本文共 2813 字,大约阅读时间需要 9 分钟。

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Data.OleDb;

using System.IO;

namespace SendEMail

{

    public partial class frmSaveImg : Form

    {

        OleDbConnection conn;

        public frmSaveImg()

        {

            InitializeComponent();

            //OleDbConnection连接字符串

            string strConn = @"provider=Microsoft.Jet.OLEDB.4.0;data source=" + Application.StartupPath + "\\db1.mdb";

            //创建OleDbConnection对象

            conn = new OleDbConnection(strConn);

        }

        /// <summary>

        /// 执行SQL语句函数

        /// </summary>

        /// <param name="sqlcmd">SQL语句</param>

        /// <param name="paras">SQL语句中的参数组</param>

        /// <returns>返回受影响记录条数</returns>

        public int ExecuteSql(string sqlcmd,params OleDbParameter[] paras)

        {

            OleDbCommand cmd = new OleDbCommand(sqlcmd, conn);

            if (conn.State == ConnectionState.Closed)

            {

                conn.Open();

            }

            foreach (OleDbParameter p in paras)

            {

                cmd.Parameters.Add(p);

            }

            int cnt = cmd.ExecuteNonQuery();

            conn.Close();

            return cnt;

        }

        /// <summary>

        /// 执行SQL查询

        /// </summary>

        /// <param name="sqlcmd">SQL语句</param>

        /// <returns>返回数据表</returns>

        public DataTable QuerySql(string sqlcmd)

        {

            OleDbDataAdapter oda = new OleDbDataAdapter(sqlcmd, conn);

            DataTable dt = new DataTable();

            oda.Fill(dt);

            return dt;

        }

        //单击pictureBox1是执行

        private void pictureBox1_Click(object sender, EventArgs e)

        {

            //打开文件对话框

            OpenFileDialog ofd = new OpenFileDialog();

            //选择图片后,点击确定按钮,加载图片

            if (ofd.ShowDialog() == DialogResult.OK)

            {

                pictureBox1.ImageLocation= ofd.FileName;

            }

        }

        //单击保存按钮执行图片保存到数据库中

        private void button1_Click(object sender, EventArgs e)

        {

            //插入数据SQL语句, img字段为表中存储图片的字段(ole类型)

            string sql = "insert into tb_img (img) values (@img)";

            //读取图片文件流

            FileStream fs = File.Open(pictureBox1.ImageLocation, FileMode.Open, FileAccess.Read);

            //将流转化为byte数组

            byte[] MyData = new byte[fs.Length];

            fs.Read(MyData, 0, MyData.Length);

            fs.Close();

            //给SQL语句中的参数@img, 赋值

            OleDbParameter p = new OleDbParameter("@img", MyData);

            //执行SQL语句,将数据插入表中

            ExecuteSql(sql, p);

            //刷新comboBox1

            comboBox1.ValueMember = "id";

            comboBox1.DisplayMember = "id";

            comboBox1.DataSource = QuerySql("select id from tb_img");

        }

        //当comboBox1的index改变时执行

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

        {

            //得到当前comboBox1选中的记录

            DataTable dt = QuerySql("select * from tb_img where id =" + comboBox1.SelectedValue.ToString());

            //将值强转为byte数组

            byte[] MyData = (byte[])dt.Rows[0]["img"];

            //将byte[]数组写入到流中

            MemoryStream s = new MemoryStream();

            s.Write(MyData, 0, MyData.Length);

            //pictureBox1加载得到的流

            pictureBox1.Image = Image.FromStream(s);

        }

        //窗体启动时,comboBox1绑定数据库

        private void frmSaveImg_Load(object sender, EventArgs e)

        {

            comboBox1.ValueMember = "id";

            comboBox1.DisplayMember = "id";

            comboBox1.DataSource = QuerySql("select id from tb_img");

        }

    }

}

转载于:https://www.cnblogs.com/lius3603/archive/2013/04/24/3040586.html

你可能感兴趣的文章
Core Data: 多线程大量数据同步
查看>>
二分法查找
查看>>
浏览器推荐 --- 搜狗浏览器
查看>>
感冒 类型
查看>>
DataGridView 清空数据
查看>>
iis网站发布相关问题
查看>>
信息安全实验四:information-security
查看>>
【CF1141E】Superhero Battle
查看>>
ssh登录一段时间后断开的解决方案
查看>>
【BZOJ3534】【Luogu P3317】 [SDOI2014]重建 变元矩阵树,高斯消元
查看>>
Ubuntu常用命令大全
查看>>
ScheduledExecutorService 定时任务,线程
查看>>
《C++ Primer Plus》读书笔记之三—循环与关系表达式
查看>>
vueJs2.0学习笔记(三)
查看>>
run in thread
查看>>
[HNOI2019]校园旅行
查看>>
vue实现菜单切换
查看>>
Java Web学习总结(28)——Java Web项目MVC开源框架SSH和SSM比较
查看>>
Maven学习总结(30)——Maven项目通用三级版本号说明
查看>>
如何提高iOS开发技能
查看>>