///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. Maven的pom文件配置

    pom.xml文件如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// ...

  2. 【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?

    loadrunner录制脚本时候有事件但是一直白页怎么办? 解决办法:依次进行下方1.2.方法操作,如果还不行再进行3的操作. 1.勾选下图IE浏览器的Internet选项中“启用第三方浏览器拓展*” ...

  3. 预训练模型与Keras.applications.models权重资源地址

    什么是预训练模型 简单来说,预训练模型(pre-trained model)是前人为了解决类似问题所创造出来的模型.你在解决问题的时候,不用从零开始训练一个新模型,可以从在类似问题中训练过的模型入手. ...

  4. flask实现api

    https://www.cnblogs.com/vovlie/p/4178077.html from flask import Flask, jsonify app = Flask(__name__) ...

  5. (转)《SSO CAS单点系列》之 15分钟让你了解SSO技术到底是个什么鬼!

    Web应用系统的演化总是从简单到复杂,从单功能到多功能模块再到多子系统方向发展. .当前的大中型Web互联网应用基本都是多系统组成的应用群,由多个web系统协同为用户提供服务. 多系统应用群,必然意味 ...

  6. 线程,协程,IO模型

    理论: 1.每创造一个进程,默认里面就有一个线程 2.进程是一个资源单位,而进程里面的线程才是CPU上的一个调度单位 3.一个进程里面的多个线程,是共享这个进程里面的资源的 4.线程创建的开销比进程要 ...

  7. liunx ubuntu java 环境的配置

    手动安装jdk 一,下载jdk安装文件: jdk网站地 址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads ...

  8. zw版【转发·台湾nvp系列Delphi例程】HALCON TestSubsetRegio

    zw版[转发·台湾nvp系列Delphi例程]HALCON TestSubsetRegio procedure TForm1.Button1Click(Sender: TObject);var rg0 ...

  9. 从Linux服务器下载文件到本地命令

    从Linux服务器下载文件夹到本地1.使用scp命令 scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件 ...

  10. NET Framework 4.0无法安装!

    win7旗舰版无法安装CAD2012,安装NET Framework 4.0的时候就出现错误,安装NET Framework 4.0单独版也无法安装出现错误. 解决方法: 1.点击电脑桌面右下角的“开 ...