用C#将图片保存至Oracle BLOB字段中的方法

本文我想跟大家分享的是如何将 C# 中的一些图像对象保存到 Oracle 中的 BLOB 字段中,这里我们并不想从零开始,而是使用我自己的框架,下面我们开始。

1. 首先创建一个空的表:

CREATE TABLE GAMBAR
(
 GAMBAR_BIN BLOB
);

2. 接下来下载 ImageViewer 库. 这是一个我自己开发的 WPF 用户控件用来加载图片文件到 WPF 窗体(这是一个开源的控件,尽管我很讨厌开源),下载后解压。

3. 接下来创建一个 WPF 应用 (我很讨厌这样写 File –> New –> Project… –> WPF Application ) 然后取个名字 WpfSaveToPhotoOracle. 对了,我差点忘了我用的是 Visual Studio 2008 来写这个例子。

4. 将下载后的 ImageViewer.dll做为引用添加到项目中

5. 修改你的窗体如下:

或者你真的很懒,只需要复制一下的 XAML 代码即可:

代码如下:

<Window x:Class="WpfSavePhotoToOracle.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:s="clr-namespace:ImageViewer;assembly=ImageViewer"
    Title="Window1" Height="324" Width="392" >
    <Grid>
        <s:ImageViewer Name="imgViewer" />
        <Button Height="23" HorizontalAlignment="Left"
                Margin="106,0,0,31.4" Name="btnSaveToOracle"
                VerticalAlignment="Bottom" Width="75"
                Click="btnSaveToOracle_Click">Save</Button>
    </Grid>
</Window>

6. 下一步也是最后一步,我们进入代码逻辑,双击 Save 按钮然后修改代码如下:

using System.Windows;
using System.Data.OracleClient;
using System.Data;
using System;

namespace WpfSavePhotoToOracle
{
  /// <summary>
  /// Interaction logic for Window1.xaml
  /// </summary>
  public partial class Window1 : Window
  {
    OracleConnection conn;
    OracleCommand cmd;

    public Window1()
    {
      InitializeComponent();
    }

    private void btnSaveToOracle_Click(object sender, RoutedEventArgs e)
    {
      try
      {
        conn = new OracleConnection(
          "Data Source=localhost;" +
          "Persist Security Info=True;" +
          "User ID=C07;Password=C07;Unicode=True");
        conn.Open();

        cmd = new OracleCommand(
          "INSERT INTO GAMBAR VALUES(:blobtodb)",
          conn);
        cmd.CommandType = CommandType.Text;

        OracleParameter param = cmd.Parameters.Add("blobtodb",
          OracleType.Blob);
        param.Direction = ParameterDirection.Input;
        param.Value = imgViewer.ImageBinaryData;

        cmd.ExecuteNonQuery();

        conn.Close();
        MessageBox.Show("Image saved");
      }
      catch (Exception ex)
      {
        MessageBox.Show("failed to save (" + ex.Message + ")");
      }
    }
  }
}

7. 现在可以测试你的项目了,点击 Browse... ,选择一个图片然后点击保存按钮,你将看到一个 “Image Saved” 的消息提示框,这表示成功了。

8. 现在检查你的数据库看看写入的数据。

好了,就这么简单。

(0)

相关推荐

  • ORACLE批量导入图片到BLOB字段代码示例

    要插入图片的表不是固定的,而且是批量插入很多张,还要考虑到因为图片的文件名错误,修改后要再次插入,此时应避免已经插入的重复执行操作, 浪费时间. 所以就选择先用一张临时表来暂时保存从文件系统读取的照片,用DBMS_LOB的方法来处理. 第一步:创建一个数据库可以访问的目录(注意:这个目录是数据库服务器上的目录,不是客户机上的) -- Create directory create or replace directory 图片目录 as 'E:\照片'; 第二步:将图片文件放入刚建好的目录下面,

  • oracle 函数判断字符串是否包含图片格式的实例代码

    首先是写一个分割字符串的函数,返回table类型 CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN ty_str_split IS j INT := 0; i INT := 1; len INT := 0; len1 INT := 0; str VARCHAR2 (4000); str_split ty_str_split := ty_str_split (); BEGI

  • 用C#将图片保存至Oracle BLOB字段中的方法

    本文我想跟大家分享的是如何将 C# 中的一些图像对象保存到 Oracle 中的 BLOB 字段中,这里我们并不想从零开始,而是使用我自己的框架,下面我们开始. 1. 首先创建一个空的表: CREATE TABLE GAMBAR ( GAMBAR_BIN BLOB ); 2. 接下来下载 ImageViewer 库. 这是一个我自己开发的 WPF 用户控件用来加载图片文件到 WPF 窗体(这是一个开源的控件,尽管我很讨厌开源),下载后解压. 3. 接下来创建一个 WPF 应用 (我很讨厌这样写 F

  • JSP实现远程文件下载保存到服务器指定目录中的方法

    本文实例讲述了JSP实现远程文件下载保存到服务器指定目录中的方法.分享给大家供大家参考,具体如下: <%@page import="java.net.*,java.io.*"%> <%! public boolean saveUrlAs(String photoUrl, String fileName) { //此方法只能用户HTTP协议 try { URL url = new URL(photoUrl); HttpURLConnection connection =

  • C#将图片存放到SQL SERVER数据库中的方法

    本文实例讲述了C#将图片存放到SQL SERVER数据库中的方法.分享给大家供大家参考.具体如下: 第一步: //获取当前选择的图片 this.pictureBox1.Image = Image.FromStream(this.openFileDialog1.OpenFile()); //获取当前图片的路径 string path = openFileDialog1.FileName.ToString(); //将制定路径的图片添加到FileStream类中 FileStream fs = ne

  • Oracle删除字段中的空格、回车及指定字符的实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: create or replace procedure PROC_test is --Description:删除字段中的指定字符(回车chr(13).换行chr(10)) --By LiChao --Date:2016-03-01 colname varchar(20); --列名 cnt number; --包含换行符的列的行数 v_sql varchar(2000); --动态SQL变量 begin --读取表中的列 for col i

  • Oracle中大对象(LOB)处理方法

    目录 一.LOB数据类型分类 1.按存储数据的类型分 2.按存储方式分 3.Null LOBs与Empty LOBs 二.LOB写入 三.LOB读取 四.BFile文件大对象(存储在操作系统文件中的数据) 1. 创建 2. 读取 五.将文件系统数据库通过BFile导入到LOB字段中 六.C#读写Oracle BOLB数据. (1)写入数据到Orable Blob字段中. (2)读取Oracle Blob到文件中. 一.LOB数据类型分类 1.按存储数据的类型分 字符类型: CLOB:存储大量 单

  • 深入浅析mybatis oracle BLOB类型字段保存与读取

    一.BLOB字段 BLOB是指二进制大对象也就是英文Binary Large Object的所写,而CLOB是指大字符对象也就是英文Character Large Object的所写.其中BLOB是用来存储大量二进制数据的:CLOB用来存储大量文本数据.BLOB通常用来保存图片.文件等二进制类型的数据. 二.使用mybatis操作blob 1.表结构如下: create table BLOB_FIELD ( ID VARCHAR2(64 BYTE) not null, TAB_NAME VARC

  • iOS实现图片保存与搜索功能

    本文实现Photos.framework的常见功能,包括:创建自定义相册.保存图片到自定义相册.搜索所有相册的图片,具体内容如下 1.保存图片到相册 /** * 保存图片到相册 */ - (IBAction)saveImage { PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus]; if (status == PHAuthorizationStatusDenied) { NSLog(@"请到[设置-隐私-照片]

  • java读写oracle的blob字段示例

    复制代码 代码如下: package com.wanmei.meishu; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.InputStream;import java.io.OutputStream;import java.sql.Connection;import java.sql.DriverManager;import java

  • PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】

    本文实例讲述了PHP操作MySQL中BLOB字段的方法.分享给大家供大家参考,具体如下: 1.MySQL中BLOB字段类型 BLOB类型的字段用于存储二进制数据. MySQL中,BLOB是个类型系列,包括:TinyBlob.Blob.MediumBlob.LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型 TinyBlob:  最大 255字节 Blob:      最大 65K MediumBlob:最大 16M LongBlob:  最大

随机推荐