C# 访问Access存取图片

news2024/9/20 5:06:03

图片存入ole字段,看有的代码是获取图片的字节数组转换为base64字符串,存入数据库;显示图片是把base64字符串转换为字节数组再显示;直接存字节数组可能还好一点;

插入的时候用带参数的sql写法比较好;用拼接sql一般会出错;

测试表有三个字段,加载一个图片然后插入记录;

插入以后如下;第5、6条是对的,3、4没插对;如果要png、jpeg、gif等格式都支持,写为 image1.Save(ms, image1.RawFormat);

 

读取并显示如下;

 

插入记录的代码,

            Image image1;
            MemoryStream ms = new MemoryStream();
            byte[] arr1 = null; ;

            if (pictureBox1.Image != null)
            {
                image1.Save(ms, image1.RawFormat);
                arr1 = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(arr1, 0, (int)ms.Length);

                //pic1 = Convert.ToBase64String(arr1);
            }
            ms.Close();

            if (button1.Text == "添加")
            {
                if (textBox1.Text == "")
                {
                    MessageBox.Show("名字不能为空!", "添加信息");
                    return;
                }
                else
                {
                    string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + Environment.CurrentDirectory + "\\mytest.mdb'";
                    string query = "INSERT INTO testpic (a1, a2, ppp) VALUES (?,?,?)";
 
                    using (OleDbConnection conn = new OleDbConnection(connectionString))
                    {
                        using (OleDbCommand cmd = new OleDbCommand(query, conn))
                        {
                            // 这里设置参数值,注意索引对应你SQL语句中参数的位置
                            cmd.Parameters.AddWithValue("?", textBox1.Text);
                            cmd.Parameters.AddWithValue("?", textBox2.Text);
                            cmd.Parameters.AddWithValue("?", arr1);
 
                            conn.Open();
                            int rowsAffected = cmd.ExecuteNonQuery();

                            conn.Close();
                        }
                    }

                    textBox1.Text = "";
                    textBox2.Text = "";
                }
            }

读取显示图片的代码,

	private void button2_Click(object sender, EventArgs e)
        {
            string sql1 = "select * from testpic where id = " + 6;
            byte[] buff = null;
            buff = achelp.GetBufferFromDB(sql1, "ppp");

            System.IO.MemoryStream picbuf = new System.IO.MemoryStream(buff);
            Image image = Image.FromStream(picbuf, true);
            picbuf.Close();

            pictureBox1.Image = image;
        }

        ......

        //返回图片byte[]
        public byte[] GetBufferFromDB(string strSql, string fieldname)
        {
            byte[] buff = null;

            if (conn_str == null)
            {
                return null;
            }

            try
            {
                ole_connection.Open();//打开连接

                if (ole_connection.State == ConnectionState.Closed)
                {
                    return null;
                }

                ole_command.CommandText = strSql;
                ole_command.Connection = ole_connection;

                ole_reader = ole_command.ExecuteReader(CommandBehavior.Default);

                if (ole_reader.Read())
                {
                    buff = (byte[])ole_reader[fieldname];
                }

                ole_reader.Close();
                ole_reader.Dispose();
            }
            catch (System.Exception e)
            {
                //Console.WriteLine(e.ToString());
                MessageBox.Show(e.Message);
            }
            finally
            {
                if (ole_connection.State != ConnectionState.Closed)
                {
                    ole_connection.Close();
                }
            }

            return buff;
        }

要先执行ole_reader.Read(),然后才能取ole_reader[fieldname];
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2147944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

InternVL 微调实践闯关任务

基础任务 follow 教学文档和视频使用QLoRA进行微调模型,复现微调效果,并能成功讲出梗图. 尝试使用LoRA,或调整xtuner的config,如LoRA rank,学习率。看模型Loss会如何变化,并记录调整后效果(选做&#xff…

十、数字人IP应用方案

1、背景 在当今的数字时代,随着AI技术的突飞猛进,数字人AI已经从概念走向应用,成为知识内容创作领域一股不可忽视的力量。它的出现,在很大程度上极大地提高了内容的生产效率,大有替代知识IP,成为内容IP终结者的趋势。 数字人IP,从形象到声音,与知识博主真人的相似度可…

初中生物--7.生物圈中的绿色植物(二)

绿色植物与生物圈的水循环 1.植物对水分的吸收和运输 1.植物主要通过根吸收水分。根吸收水分的主要部位是根尖的成熟区。 2.外界溶液浓度<根毛细胞溶液浓度→细胞吸水&#xff1b; 1.在这种情况下&#xff0c;根毛细胞内的溶液浓度高于外界溶液&#xff0c;因此细胞内的…

蓝星多面体foc旋钮键盘复刻问题详解

介绍&#xff1a; 本教程是针对立创开源项目 承载我所有幻想的键盘 - 立创开源硬件平台 作者是 蓝星多面体 这里我总结一下我复刻过程中的一些问题 一 <<编译环境怎么搭建&#xff1f;>> 第一步 安装vscode 下载vscode &#xff08;可以在各大应用平台…

R语言中的shiny框架

R语言中的shiny框架 Shiny 的基本概念基本用法示例常见用法示例1. 输入控件2. 输出控件3. 动态 UI4. 数据传递和反应式编程 高级功能1. 使用 shinyjs2. 使用 shinythemes Shiny 是一个 R 语言的框架&#xff0c;用于构建交互式的网页应用&#xff0c;可以让用户以最少的 HTML、…

飞驰云联FTP替代方案:安全高效文件传输的新选择

FTP协议广泛应用各行业的文件传输场景中&#xff0c;由于FTP应用获取门槛低、使用普遍&#xff0c;因此大部分企业都习惯使用FTP进行文件传输。然而面临激增的数据量和网络安全威胁的不断演变&#xff0c;FTP在传输安全性与传输性能上有所欠缺&#xff0c;无法满足企业现在的高…

2024java面试-软实力篇

为什么说简历很重要&#xff1f; 一份好的简历可以在整个申请面试以及面试过程中起到非常好的作用。 在不夸大自己能力的情 况 下&#xff0c;写出一份好的简历也是一项很棒的能力。为什么说简历很重要呢&#xff1f; 、 先从面试来说 假如你是网申&#xff0c;你的简历必然…

Windows本地pycharm使用远程服务器conda虚拟环境

1、Windows下载pycharm专业版&#xff0c;必须是专业版&#xff0c;不然连不了远程服务器。 Download PyCharm: The Python IDE for data science and web development by JetBrains 2、添加远程服务器的虚拟环境&#xff0c;在pycharm右下角落选择 添加新的解释器>>SSH。…

计算机网络33——文件系统

1、chmod 2、chown 需要有root权限 3、link 链接 4、unlink 创建临时文件&#xff0c;用于非正常退出 5、vi vi可以打开文件夹 ../是向外一个文件夹 6、ls ls 可以加很多路径&#xff0c;路径可以是文件夹&#xff0c;也可以是文件 ---------------------------------…

【Java】并发集合

并发集合&#xff08;java.util.concurrent&#xff09; 一、List CopyOnWriteArrayList&#xff08;ReentrantLock实现线程安全&#xff09; &#xff08;1&#xff09;并发修改&#xff08;写操作&#xff09;时保证线程安全&#xff1a; 通过ReentrantLock实现多个线程并…

Solidwork角度尺寸标注

效果如下&#xff1a; 首先&#xff0c; 先选第一条边 然后选第二条边&#xff0c;即可

把设计模式用起来!(4) 用不好模式?之原理不明

&#xff08;清华大学出版社 《把设计模式用起来》书稿试读&#xff09; 上一篇&#xff1a;把设计模式用起来&#xff01;&#xff08;3&#xff09;用不好模式&#xff1f;之时机不对 为什么用不好设计模式&#xff1f;——原理不明 难搞的顾客&#xff1a;“抹这种霜&#…

【prefect】python任务调度工具 Prefect | 可视化任务工具 | Python自动化的终极武器 | 高效数据管道管理

一、产品介绍 1、官方 Github https://github.com/PrefectHQ/prefect 2、官方文档 https://docs.prefect.io/3.0/get-started/index 3、Pgsql说明 正确的python链接pgsql如下&#xff1a; import psycopg2 from sqlalchemy import create_enginedef connect_with_psycopg2(…

【机器学习】经典数据集鸢尾花的分类识别

【机器学习】经典数据集鸢尾花的分类识别 1、数据集介绍1.1 数据集详情 2、实验内容2.1 准备数据集2.2 创建颜色映射对象2.3 绘制特征散点图2.4 数据的归一化2.5 数据的标准化 3、实验截图提取萼片长度与萼片宽度分类提取萼片长度与花瓣长度分类提取萼片长度与花瓣宽度分类提取…

Photoshop 2021安装教程

软件介绍 Adobe Photoshop&#xff0c;简称“PS”&#xff0c;是美国Adobe公司旗下最为出名的图像处理软件系列之一。ps 2021新增一键换天空&#xff0c;AI只能滤镜&#xff0c;新增内置的画笔工具极为丰富&#xff0c;成千上万的精致像素、动态和矢量画笔可以满足你的各种绘图…

谷歌深度学习研究揭示OpenAI O1模型优化策略:比规模更重要的计算效率

引言 近年来&#xff0c;大型语言模型&#xff08;LLMs&#xff09;如OpenAI的GPT-4和Google DeepMind的Palm 2已成为自然语言处理领域的佼佼者&#xff0c;它们通过生成类人文本、回答复杂问题、编写代码等能力&#xff0c;改变了许多行业的工作方式。然而&#xff0c;随着这…

2.4 数据库表字段约束

一、数据库三大范式 我们构造数据库的时候必须要遵守一定的原则&#xff0c;那这个规则就是范式关系型数据库&#xff0c;一共有六种范式&#xff0c;一般情况下只需要满足第三范式即可。 ​第一范式&#xff1a;原子性构造数据库必须遵循一定的规则&#xff0c;这种规则就是…

使用集成学习对不同的机器学习方法进行集成

数据入口&#xff1a;数据人才的现场调研 - Heywhale.com 本数据集中有 43 行&#xff0c;19 列&#xff0c;数据集包含如下字段&#xff1a; 首先读取数据&#xff1a; import pandas as pd# 读取Excel文件 data pd.read_excel(数据人才的现场调研.xls)可以输出每一列含有…

供方软件供应链安全保障要求及开源场景对照自评表(下)

国标《信息安全技术 软件供应链安全要求》确立了软件供应链安全目标&#xff0c;规定了软件供应链安全风险管理要求和供需双方的组织管理和供应活动管理安全要求。 开源软件供应链作为软件供应链的一种特殊形式&#xff0c;该国标亦适用于指导开源软件供应链中的供需双方开展组…

C HTML格式解析与生成之gumbo

测试 #include <fstream> #include <iostream> #include <stdlib.h> #include <string>#include "../src/gumbo.h"// 提取纯文本内容 static std::string cleantext(GumboNode* node) {if (node->type GUMBO_NODE_TEXT) {return std::st…