在sql server中实现图片的存入和读取

图片存储到SQLServer数据库中 立即下载
AI摘要

本文介绍了一种使用C#将图片存储到SQL数据库的方法,并提供了详细的代码示例。通过流的形式,将图片转换为字节数组进行存取,实现了图片与数据库的有效交互。

首先提醒一下,无论是将图片存入数据库,还是从数据库中读取,都是采用流的形式进行,虽然,在数据库中,存储图片的类型是Image,但是sql中的Image和C#中的Image不一样,就如同sql中的null的判断在C#中得用DBNULL来判断


先看窗体设计,很简单,一共就五个控件,名字都没改,pictureBox1,textBox1,button1,button2,button3(依次从上到下,从左到右),看源码的时候会看到的
在这里插入图片描述
数据库中表的设计
就一个Image
在这里插入图片描述

首先程序运行,可以先选择一张图片
文本框中是图片在本地磁盘上的路径,在此掩盖部分
在这里插入图片描述

然后点击,存入数据库
提示存入成功
在这里插入图片描述

在此,将窗体关闭,重新打开,读取图片。
至于为什么这么做看到源码就知道了

重新打开后的
在这里插入图片描述

点击从数据库中读取按钮
拿到了刚才存入的图片
在这里插入图片描述

源码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 读取数据库中的图片
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 选择图片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            //初始化打开文件 对话框
            OpenFileDialog ofdlgTest = new OpenFileDialog();
            ofdlgTest.Filter = "*.jpg|*.png";   //文件过滤 筛选可以打开的文件
            ofdlgTest.Multiselect = false;    //设置不可以选择多个文件

            //显示文件打开对话框
            DialogResult result = ofdlgTest.ShowDialog();
            
            //选择打开按钮的时候,将文件名显示到文本框中
            if (result== DialogResult.OK)                   //判断是否打开文件
            {
                this.textBox1.Text = ofdlgTest.FileName;

                pictureBox1.Image = Image.FromFile(ofdlgTest.FileName);
            }
        }

        /// <summary>
        /// 存入数据库
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            string constr = "Data Source=.;Initial Catalog=MyFirstDatabase;User Id=sa;PassWord=91811372c";

            using(SqlConnection con=new SqlConnection(constr))
            {
                //sql语句  插入图片
                string sql = "insert into ImageTest values(@UserImage)";
                using(SqlCommand com=new SqlCommand(sql,con))
                {
                    byte[] buffer;   //将图片转换为字节数组 存入数据库   textBox1.Text 是文件的路径
                    using(FileStream stream = new FileStream(textBox1.Text, FileMode.OpenOrCreate, FileAccess.Read))
                    {
                        //通过文件路径 打开文件
                        buffer = new byte[stream.Length];
                        stream.Read(buffer, 0, buffer.Length);  //转换后 ,存入buffer中
                    }

                    //这个参数 其实 也没必要声明 不过习惯使用 带参数的sql语句了 
                    SqlParameter pms = new SqlParameter("@UserImage", SqlDbType.Image) { Value = buffer };
                    com.Parameters.Add(pms);
                    con.Open();
                    string msg = com.ExecuteNonQuery()>0?"存入成功":"存入失败";
                    MessageBox.Show(msg);
                }
            }
        }

        /// <summary>
        /// 从数据库中读取
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {
            string conStr = "Data Source=.;Initial Catalog=MyFirstDatabase;User Id=sa;PassWord=自己的密码";
            using(SqlConnection con=new SqlConnection(conStr))
            {
                //sql语句
                string sql = "select * from ImageTest";
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    con.Open();

                   
                   using(SqlDataReader reader=com.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            //声明一字节数组   将数据库中的图片现存入字节数组中
                            byte[] imageByte;
							//在这我是知道里面就一张图,所以这么写的,个人根据实际情况,可做修改
                           while(reader.Read())
                            {
                                //将图片转换为字节数组
                                imageByte = (byte[])reader["UserImage"];

                                //转换为文件流
                                MemoryStream stream = new MemoryStream(imageByte);
                                //再将文件流 转换为 图像
                                Bitmap bitmap = new Bitmap(stream);
                                pictureBox1.Image = bitmap;
                            }
                        }
                    }
                }
            }
        }
    }
}

SpringSecurity(15)——OAuth2密码模式 SpringSecurity Oauth2密码模式 阅读详情

相关推荐

STM32F103 CAN通信避坑指南:从标准库配置到收发测试的完整流程

本文详细介绍了STM32F103 CAN通信的实现流程,从标准库配置到收发测试,帮助开发者避开常见陷阱。内容涵盖硬件连接、波特率计算、过滤器配置及错误处理等关键环节,提供实用的代码示例和调试技巧,确保CAN通信的稳定性和可靠性。

weixin_30627341的博客 324

sql server存储图片

一般情况下,将图片保存在服务器的某个目录下,在数据库中存储此图片的地址,这样做的好处很明显 可以节省数据库的存储空间当数据库崩溃后,图片资源不会丢失向数据库中插入图片时,需要先将图片压缩成二进制表示形式,而从数据库中查询图片时,则需要将二进制流转换为图片,这在频繁查询时会影

csdn姚宏波 1万+

告别密码本!用Windows NPS给华为/华三交换机做Radius认证,SSH登录更安全

本文详细介绍了如何利用Windows NPS实现华为/华三交换机的Radius认证,提升SSH登录安全性。通过集中化管理、精细化控制和完整审计追踪,企业可告别传统密码本,大幅提升网络设备管理效率。文章包含NPS服务部署指南、交换机配置详解及调试技巧,助力企业构建安全高效的统一认证体系。

weixin_42549723的博客 418

sql server怎么存储图片

请注意,使用OPENROWSET和BULK操作需要具有相应的权限,并且可能受到安全限制,如服务器的配置和安全策略所影响。此外,从SQL Server 2016开始,推荐使用FILESTREAM存储二进制大对象数据,这样可以将文件存储直接integrated到SQL Server中,从而提供更好的性能和管理。在SQL Server中,可以使用VARBINARY数据类型来存储图片。以下是一个简单的例子,展示了如何将图片存储到数据库中,并从数据库中检索出来。sql server怎么存储图片。

cuisidong1997的博客 3133

Windows——Nessus安装(无限制)

Nessus手把手图文安装,解除ip限制~

网安小白的博客 9443

nCode:GlyphWorks案例教程一

nCode GlyphWorks案例一Comparing Frequency Content of Two Different Tests案例文件目标配置选择数据 Comparing Frequency Content of Two Different Tests 在本案例中,我们将比较来自两个不同测试的六个加速计通道的频率内容。将三轴加速度计放置在车辆的左前角和右前角,然后分别在两个不同的试验路面上行驶12分钟以上。 案例文件 此案例的文件(采用nCode DAC格式)位于nCode安装目录下的\demo

追月行的博客 1万+

如何将图片存进SQL数据库中以及从数据库读取照片(解决办法)

如何将图片存进SQL数据库,以及如何从数据库中读取图片。

小小张自由—>张有博 2万+

Homebrew高效升级与国内镜像源配置全攻略

本文详细介绍了如何通过配置国内镜像源(如清华、中科大、阿里云)来高效升级Homebrew,解决国内开发者访问GitHub仓库速度慢的问题。文章提供了从基础配置到永久生效的完整教程,包括常见问题解决和进阶技巧,帮助开发者大幅提升软件包管理效率。

weixin_28835551的博客 414

ASP.NET中常用功能代码总结(3)——上传图片到数据库

ASP.NET中常用功能代码总结(3)——上传图片到数据库 整理:Terrylee 一.上传图片到数据库  1/**//// &lt;summary&gt; 2/// 上传图片 3/// &lt;/summary&gt; 4private void UploadFile() 5{ 6    /**////得到用户要上传的文件名 7    string strFilePathName = ...

weixin_34008805的博客 370

蓝牙功耗优化实战:连接蓝牙耳机时高耗电问题的深度排查与解决

连接任意一款蓝牙耳机, 进行插入实网SIM卡, 同时连接蓝牙耳机后, 进入IDLE模式, 测试时间为10分钟的测试结果, 平均电流毫安在8左右. 测试结果1: 平均电流 8.84mA 测试结果2: 平均电流 7.39mA 厘清问题: 由于出现上两幅图中 绿色线圈中的 20mA 左右高耗电时段, 从而将整体的平均电流抬高. 于是在记录IDLE下电流出现绿色线圈中的 20mA 左右高耗电时段, 同时录制UART1 Catcher log. Filter: MOD_BT/MOD_ATC.

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 1001

在ubuntu20.04中安装MATLAB时常见问题及解决方法

   如果你刚装完ubuntu20.04,这时你想要安装MATLAB2021A,在输入命令./install进行安装时,可能会报以下错误:    terminate called after throwing an instance of ‘JailContainerException’ what(): Error: 88: No JRE version parsed from/media/jzx/MATHWORKS_R2021A/sys /java/jre/glnxa64/jre/release   

慕羽★的博客 1万+

C# SQL Server数据库图片存取

数据库字段 界面结构 C#代码 存入数据库 string connString = "initial catalog=Picture;Server=(local);user id=molihuan;password=123456";//数据库连接字符串 private void cun_Click(object sender, EventArgs e) { openFileDialog1.Filter = "*jpg|*.JPG|*

molihuan的博客 1907

【DeepSeek应用实践】手把手教程:用 AnythingLLM + Ollama + DeepSeek-R1 搭建本地企业知识库

在众多的技术方案中,我们选择了 AnythingLLM、Ollama 和 DeepSeek-R1 这一组合来搭建本地知识库。Ollama 作为一个轻量级的本地化大语言模型部署工具,支持多种模型,易于安装和使用,能够快速在本地运行强大的语言模型。DeepSeek-R1 是一个专为知识库问答设计的检索增强生成(RAG)模型,它结合了检索和生成的优势,能够快速从知识库中检索相关信息并生成精准答案。而 AnythingLLM 则是一个用户友好的界面工具,可以方便地连接 Ollama 和 DeepSeek-R1

寻道AI,探索AI无限可能! 2566

数据库存储图片和读取图片

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; usi...

a5868530的博客 376

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

.NET在SQL SERVER中的图片存取技术

本文总结如何在.Net WinForm和.Net WebForm(asp.net)中将图片存入SQL Server中并读取显示的方法 。1.使用asp.net将图片上传并存入SQL Server中,然后从SQL Server中读取并显示出来:1)上传并存入SQL Server数据库结构create table test{id identity(1,1),FImage image}相关的存储过程Cr

cpsing的窝 782

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

用存储过程向SQL Server数据库添加图片

下面的代码实现向SQL Server数据库添加图片和文字的功能。首先,在SQL查询分析器中执行下面的语句,以创建表和存储过程。Drop Table PersonGoCreate Table Person(PersonID Int Identity,PersonEmail Varchar(255),PersonName Varchar(255),PersonSex

hill_wash的专栏 897

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

NET在SQL Server中的图片存取技术(例子在管理里InOutImg)

 HTML Tags and JavaScript tutorialvar encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);

wmh4242424cs的专栏 508

ASP.NET如何存取SQL Server数据库图片

  SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。在这篇文章中我们要看到如何在SQL Server中存储和读取图片。  1、建立一个表:  在SQL SERVER中建立这样结构的一个表: 列名 类型 目的 ID Integer 主键ID IMGTITLE Varcha

933

lotus 图片存入sql server的操作方法(原创)

<br />1、在讲插入ls 操作图片如何插入sql server之前,我们要先了解些相关知识<br />ADO中的AppendChunk方法---将我们的数据追加到大型文本、二进制文件中<br />Notesstream类,读取文件,转为二进制文件,具体请参考lotus designer的help<br />我们现在主要是用到open /read2个事件<br />2、代码段<br />sub F_ImageInsertSQL<br />'---声明所需要的一些变量<br />Dim conn As Va

zwfcan的专栏 1026

VB SQLServer image数据存入和取出ADODB.Stream

VB SQLSever image数据存入和取出rs是已经打开的记录,有Picture字段,字段类型是Image,现在需要将本地图片存入数据库,或者将数据库内的该图片取出‘读取本地图片的路径path到数据库Public Sub ImageReadIntoDB(path As String)Dim istream As New ADODB.Stream With istream .Type =

wf824284257的博客 1736

NET 下数据库图片的存入与读取

据库结构create table test{  id int identity(1,1),  FImage image} 相关的存储过程Create proc UpdateImage (@UpdateImage Image)AsInsert Into test (FImage) values (@UpdateImage)GO OpenFileDialog openfileDialog =

脑瓜子的程序人生 801

c# winform 读取oracle中blob字段的图片并且显示到pictureBox里,保存进库

[code="c#"]private void button2_Click(object sender, EventArgs e) { OracleConnection conn = dbc.getConnection();//获得conn连接 try { conn.Open(); OracleCommand cmd = conn.CreateCommand(); ...

黑色头发 916

.Net在SqlServer中的图片存取技术

    本文总结如何在.Net Winform和.Net webform(asp.net)中将图片存入sqlserver中并读取显示的方法    1,使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来    一,上传并存入SqlServer    数据库结构  create table test  {     id identity(1,1), 

The key to .Net 261

c#form+mysql储存读取图片_用C#实现winform对数据库读写图片

(一)写入:Stream ms;byte []picbyte;openFileDialog1.Filter = SystemConst.IMAGE_FILE_FILTER;if (this.openFileDialog1.ShowDialog() == DialogResult.OK){if ((ms = openFileDialog1.OpenFile()...

weixin_31060209的博客 422

在winform中将图片存入sqlserver,并从sqlserver中读取并显示在picturebox中

1,存入sqlserver   数据库结构   create table test   {      id identity(1,1),      FImage image   }  1.1,在窗体中加一个OpenFileDialog控件,命名为ofdSelectPic  1.2,在窗体上添加一个打开文件按钮,添加如下单击事件代码:     Stream ms;   byte[...

weixin_33918114的博客 266
上一篇: 数据库大作业-1:登录窗体设计
下一篇: 数据库作业21:并发控制
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值