///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字段,把图片存储到数据库,保存图片到数据库的更多相关文章

  1. Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)

    转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...

  2. mybatis查询mysql 数据库中 BLOB字段,结果出现乱码

    起因 mybatis-plus 通过Mapper 查询数据,映射出来的BLOB字段中的yml数据中文是乱码的 --- DefaultValue: '' Formula: '' HintContent: ...

  3. C# 连接 Oracle,读取Blob字段数据,存到文件中去,包括pdf等等

    代码如下,记得引入Oracle的dll using System; using System.Collections.Generic; using System.ComponentModel; usi ...

  4. Java实现下载BLOB字段中的文件

    概述 web项目的文件下载实现:servlet接收请求,spring工具类访问数据库及简化大字段内容获取. 虽然文章的demo中是以sevlet为平台,想必在spring mvc中也有参考意义. 核心 ...

  5. 对oracle数据库Blob字段的操作

    java实体类 定义类型 byte[] private byte[] str_blob hibernate映射文件类型oracle.sql.BLOB <property name="s ...

  6. Oracle数据库BLOB字段的存取

    述]     Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cur ...

  7. oracle 下操作blob字段是否会产生大量redo

    操作blob字段是否会产生大量redo,答案是不会.以下来做一个实验,測试数据库版本号是11.2.0.1.0: --创建一张表做測试之用 create table test_blob (   id n ...

  8. 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 重点: 实现多级子目录的压缩, ...

  9. python操作oracle数据库-查询

    python操作oracle数据库-查询 参照文档 http://www.oracle.com/technetwork/cn/articles/dsl/mastering-oracle-python- ...

随机推荐

  1. MySQL插入性能优化(转)

    原文:http://tech.uc.cn/?p=634 对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时 ...

  2. 求连续出现5次以上的值,并且取第5次所在id

    关键字:求连续出现5次以上的值,并且取第5次所在id 关键字:求在某列连续出现N次值的的数据,并且取第M次出现所在行 需求,求连续出现5次以上的值,并且取第5次所在id SQL SERVER: --测 ...

  3. 002-Spring Framework-Core-01-IoC容器

    一.概述 文章地址:https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/ 核心主要包括:IoC co ...

  4. django基于cors做跨域处理

    背景知识:跨域相关与cors策略 1.安装django-cors-headers pip install django-cors-headers 2.settings.py配置 INSTALLED_A ...

  5. 感知机PLA算法实现[转载]

    转自:https://blog.csdn.net/u010626937/article/details/72896144#commentBox 1.实现原始形式 import numpy as np ...

  6. Websocket、长连接、循环连接

    [转]转自知乎高票回答  https://www.zhihu.com/question/20215561 一.WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系 ...

  7. Hadoop 编写WordCount

    本文发表于本人博客. 前面几次讲了关于Hadoop的环境搭建.HDFS操作,今天接着继续.本来Hadoop源码中就有一个例子WordCount,但是今天我们来自己实现一个加深对这个Mapper.Red ...

  8. HDU - 2844 Coins(多重背包+完全背包)

    题意 给n个币的价值和其数量,问能组合成\(1-m\)中多少个不同的值. 分析 对\(c[i]*a[i]>=m\)的币,相当于完全背包:\(c[i]*a[i]<m\)的币则是多重背包,考虑 ...

  9. 20145104张家明 《Java程序设计》第2周学习总结

    20145104张家明 <Java程序设计>第2周学习总结 教材学习内容总结 本周学习了第三章的内容,看过之后呢,学的和c语言是相通的,看起来就是非常的顺畅,自我感觉良好,第三章主要讲了一 ...

  10. 20145204 《Java程序设计》第1周学习总结

    20145204 <Java程序设计>第1周学习总结 教材学习内容总结 本周经过不断的钻研课本,及看一些老师的视频,我对Java有了一个全新的认知.是的,Java和C都是一种语言,但是Ja ...