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- ...
随机推荐
- django如何防止csrf(跨站请求伪造)
什么是CSRF 下面这张图片说明了CSRF的攻击原理: Django中如何防范CSRF Django使用专门的中间件(CsrfMiddleware)来进行CSRF防护.具体的原理如下: 1.它修改当前 ...
- 97 条 Linux 常用命令及Vim命令总结
一:Vim编辑模式命令 基本上Vim共分为3种模式,分别是一般模式,编辑模式和命令行模式,这三种模式的作用分别如下简述: 一般模式:默认模式.打开vim直接进入的是一般模式,在这个模式下,可以进行的操 ...
- [3D]第一人称相机类Camera
自己根据C++ D3D的源码改写一个相机类(第一人称). using System; using System.Collections.Generic; using System.Linq; usin ...
- [py]函数小结
函数作用域(函数前向引用) --> 嵌套(递归是一种个特殊的嵌套) --> 递归(回归,递归是一种特殊的迭代) --> 迭代 --> 生成器 --> 匿名函数 递归 一种 ...
- SVM引入拉格朗日乘子[转载]
转自:https://zhidao.baidu.com/question/494249074914968332.html SVM使用拉格朗日乘子法更为高效地求解了优化问题. SVM将寻找具有最大几何间 ...
- C++ string 类
标准c++中string类函数介绍 注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够.字符串长度等等,而且作为 ...
- 安装完C++builder6.0启动的时候总是出现无法将'C:\Program Files\Borland\CBuilder6\Bin\bcb.$$$'重命名为bcb.dro
:兼容性问题 运行前右键属性“兼容性”-尝试不同的兼容性.比如“windows 8”
- Qml应用程序的性能考虑与建议
本文翻译自Qt官网文档: http://doc.qt.io/qt-5/qtquick-performance.html QtQml应用程序的性能考虑与建议 1.时间考虑 作为一名程序开发者,应该努力使 ...
- java -- JVM的符号引用和直接引用
在JVM中类加载过程中,在解析阶段,Java虚拟机会把类的二级制数据中的符号引用替换为直接引用. 1.符号引用(Symbolic References): 符号引用以一组符号来描述所引用的目标,符号可 ...
- pyDay17
1.用filter求素数. 埃拉托色尼筛选法. #!/usr/bin/env python3 # -*- coding: utf-8 -*- def _odd_iter(): n = 1 while ...