c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库
///c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库 闲话不多说,直接上代码
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;
using System.Data.OleDb; namespace ImageSaveOracleBlobDataBase
{
public partial class Form1 : Form
{
/// <summary>
/// 作者:黑色头发
/// C# WinForm操作oracle数据库的Blob字段
/// blog:http://heisetoufa.iteye.com
/// 静网:http://www.heisetoufa.cn
/// </summary> public Form1()
{
InitializeComponent();
} #region 保存图片到oracle数据库 private void button1_Click(object sender, EventArgs e)
{
string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";
OleDbConnection con = new OleDbConnection(cnnstr);
try
{
con.Open();
}
catch
{ }
OleDbCommand cmd = new OleDbCommand(cnnstr, con); cmd.CommandType = CommandType.Text;
cmd.CommandText = cnnstr; string imgPath = @"d:\aa\a.jpg";//图片文件所在路径
FileStream file = new FileStream(imgPath, FileMode.Open, FileAccess.Read);
Byte[] imgByte = new Byte[file.Length];//把图片转成 Byte型 二进制流
file.Read(imgByte, 0, imgByte.Length);//把二进制流读入缓冲区
file.Close(); cmd.CommandText = " insert into kk.kkzp ( xh,zp ) values ('17',:zp) ";//正常sql语句插入数据库 cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, imgByte.Length);
cmd.Parameters[0].Value = imgByte; try
{
cmd.ExecuteNonQuery();
MessageBox.Show("插入成功");
}
catch (System.Exception e1)
{
MessageBox.Show(e1.Message);
}
} #endregion #region 修改图片 private void button2_Click(object sender, EventArgs e)
{
string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";
OleDbConnection con = new OleDbConnection(cnnstr); string imgPath = @"d:\aa\b.jpg";//图片文件所在路径
FileStream file = new FileStream(imgPath, FileMode.Open, FileAccess.Read);
Byte[] ddd = new Byte[file.Length];//把图片转成 Byte型 二进制流
file.Read(ddd, 0, ddd.Length);//把二进制流读入缓冲区
file.Close(); string strSQL = "update kk.kkzp set zp=:zp where xh = '16' ";
try
{
con.Open();
}
catch
{ }
OleDbCommand cmd = new OleDbCommand(cnnstr, con); cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL;
cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, ddd.Length).Value = ddd;
cmd.ExecuteNonQuery();
MessageBox.Show("修改成功");
} #endregion #region 读出数据库里图片 private void button3_Click(object sender, EventArgs e)
{
string strSQL = "select xh,zp from kk.kkzp where xh = 16 ";
string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";
OleDbConnection con = new OleDbConnection(cnnstr);
try
{
con.Open();
}
catch
{ }
OleDbCommand cmd = new OleDbCommand(strSQL, con);
System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if (dr["zp"] != DBNull.Value)//照片字段里有值才能进到方法体显示图片,否则清空pb
{
MemoryStream ms = new MemoryStream((byte[])dr["zp"]);//把照片读到MemoryStream里
Image imageBlob = Image.FromStream(ms, true);//用流创建Image
pictureBox1.Image = imageBlob;//输出图片
pictureBox1.Image.Save("d:\\abcc.jpg", pictureBox1.Image.RawFormat);
}
else//照片字段里没值,清空pb
{
pictureBox1.Image = null;
}
}
} #endregion #region 使文本编辑变得可见 private void button4_Click(object sender, EventArgs e)
{
textBox1.Visible = true;
button5.Visible = true;
button6.Visible = true;
button7.Visible = true;
} #endregion #region 保存文本 private void button5_Click(object sender, EventArgs e)
{
string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";
OleDbConnection con = new OleDbConnection(cnnstr);
try
{
con.Open();
}
catch
{ }
OleDbCommand cmd = new OleDbCommand(cnnstr, con); cmd.CommandType = CommandType.Text;
cmd.CommandText = cnnstr; string txvalue = this.textBox1.Text.Trim(); //将textBox1.Text转换为二进制类型
byte[] expbyte = System.Text.Encoding.Unicode.GetBytes(txvalue); cmd.CommandText = " insert into kk.kkzp ( xh,zp ) values ('18',:zp) "; cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, expbyte.Length);
cmd.Parameters[0].Value = expbyte; try
{
cmd.ExecuteNonQuery();
MessageBox.Show("插入结束");
}
catch (System.Exception e1)
{
MessageBox.Show(e1.Message);
}
} #endregion #region 修改文本 private void button6_Click(object sender, EventArgs e)
{
string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";
OleDbConnection con = new OleDbConnection(cnnstr); byte[] ddd;
ddd = System.Text.Encoding.Unicode.GetBytes(this.textBox1.Text);
string strSQL = "update kk.kkzp set zp=:zp where xh = 18 ";
try
{
con.Open();
}
catch
{ }
OleDbCommand cmd = new OleDbCommand(cnnstr, con); cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL;
cmd.Parameters.Add("zp", System.Data.OleDb.OleDbType.Binary, ddd.Length).Value = ddd;
cmd.ExecuteNonQuery();
MessageBox.Show("OK!");
} #endregion #region 读出文本 private void button7_Click(object sender, EventArgs e)
{
string strSQL = "select xh,zp from kk.kkzp where xh = 18 ";
string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";
OleDbConnection con = new OleDbConnection(cnnstr);
try
{
con.Open();
}
catch
{ }
OleDbCommand cmd = new OleDbCommand(strSQL, con);
System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{ //读取BLOB数据时也要将其转换回文本类型
string dd = dr["zp"].ToString();
byte[] ooo = (byte[])dr["zp"];
string str;
str = System.Text.Encoding.Unicode.GetString(ooo);
this.textBox1.Text = str;
}
} #endregion #region 退出 private void button8_Click(object sender, EventArgs e)
{
Application.Exit();
} #endregion #region 单击状态栏 private void toolStripStatusLabel2_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://heisetoufa.iteye.com");
} #endregion
}
}
效果图

c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库的更多相关文章
- Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)
转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...
- mybatis查询mysql 数据库中 BLOB字段,结果出现乱码
起因 mybatis-plus 通过Mapper 查询数据,映射出来的BLOB字段中的yml数据中文是乱码的 --- DefaultValue: '' Formula: '' HintContent: ...
- C# 连接 Oracle,读取Blob字段数据,存到文件中去,包括pdf等等
代码如下,记得引入Oracle的dll using System; using System.Collections.Generic; using System.ComponentModel; usi ...
- Java实现下载BLOB字段中的文件
概述 web项目的文件下载实现:servlet接收请求,spring工具类访问数据库及简化大字段内容获取. 虽然文章的demo中是以sevlet为平台,想必在spring mvc中也有参考意义. 核心 ...
- 对oracle数据库Blob字段的操作
java实体类 定义类型 byte[] private byte[] str_blob hibernate映射文件类型oracle.sql.BLOB <property name="s ...
- Oracle数据库BLOB字段的存取
述] Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cur ...
- oracle 下操作blob字段是否会产生大量redo
操作blob字段是否会产生大量redo,答案是不会.以下来做一个实验,測试数据库版本号是11.2.0.1.0: --创建一张表做測试之用 create table test_blob ( id n ...
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...
- python操作oracle数据库-查询
python操作oracle数据库-查询 参照文档 http://www.oracle.com/technetwork/cn/articles/dsl/mastering-oracle-python- ...
随机推荐
- 解决 Ubuntu 下 Sublime Text 无法输入中文的问题
解决 Ubuntu 下 Sublime Text 无法输入中文的问题 1. 安装依赖库 sudo apt-get install build-essential sudo apt-get instal ...
- HDU1530 Maximum Clique dp
正解:dp 解题报告: 这儿是传送门 又是个神仙题趴QAQ 这题就直接说解法辣?主要是思想比较难,真要说有什么不懂的知识点嘛也没有,所以也就没什么好另外先提一下的知识点QAQ 首先取反,就变成了求最大 ...
- docker搭建oracle 11.2.0.3.0
dockerfile 如下: FROM oraclelinux:-slim ARG ORACLE_BASE=/opt/oracle ARG ORACLE_HOME=/opt/oracle/produc ...
- Flask系列之自定义中间件
from flask import Flask app = Flask(__name__) @app.route('/index') def index(): return 'Hello World' ...
- [golang note] 协程通信
channel基本语法 • channel介绍 √ golang社区口号:不要通过共享内存来通信,而应该通过通信来共享内存. √ golang提供一种基于消息机制而非共享内存的通信模型.消息机制认为每 ...
- 禁止或强制使用堆分配---《C++必知必会》 条款34
有时候,指明一些特定类的对象不应该被分配到堆(heap)上是个好主意.通常这是为了确保该对象的析构函数一定会得到调用.维护对象本身(body object)的引用计数的句柄对象(handle obje ...
- cocos-lua基础学习(七)Scene类学习笔记
local scene = cc.Scene:create() cc.Director:getInstance():replaceScene( scene ) cc.Director:getInsta ...
- 微信 audio 获取 duration 为 NaN 的解决方法
先加load() myaudio.load(); myaudio.oncanplay = function () { alert(myaudio.duration); } load() 方法用于在更改 ...
- 获取WebView加载的网页内容并进行动态修改
http://www.jianshu.com/p/3f207a8e32cb [Android]WebView读取本地图片 http://www.cnblogs.com/kimmy/p/4769788. ...
- SQL学习笔记四(补充-1-1)之MySQL单表查询补充部分:SQL逻辑查询语句执行顺序
阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SELECT语句关键字的定义顺序 SELE ...