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

所属分类: 软件编程 / C#教程 阅读数: 51
收藏 0 赞 0 分享

2015713103703076.png (240×195)

本文我想跟大家分享的是如何将 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 做为引用添加到项目中

2015713104005942.png (426×339)

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” 的消息提示框,这表示成功了。

2015713104216313.png (240×195)

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

2015713104455355.png (224×244)

好了,就这么简单。

更多精彩内容其他人还在看

C# SendInput 模拟鼠标操作的实现方法

C# SendInput 模拟鼠标操作的实现方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中 paint()与Onpaint()的区别

paint是事件onpaint方法onpaint方法是调用paint事件的,用哪一个,效果是一样,就看那一个方便了内部是这样实现的:
收藏 0 赞 0 分享

c#中GetType()与Typeof()的区别

c#中GetType()与Typeof()的区别,需要的朋友可以参考一下
收藏 0 赞 0 分享

将字符串转换成System.Drawing.Color类型的方法

将字符串转换成System.Drawing.Color类型的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C# 抓取网页内容的方法

C# 抓取网页内容的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

基于C#后台调用跨域MVC服务及带Cookie验证的实现

本篇文章介绍了,基于C#后台调用跨域MVC服务及带Cookie验证的实现。需要的朋友参考下
收藏 0 赞 0 分享

使用C#获取远程图片 Form用户名与密码Authorization认证的实现

本篇文章介绍了,使用C#获取远程图片 Form用户名与密码Authorization认证的实现。需要的朋友参考下
收藏 0 赞 0 分享

Winform跨线程操作的简单方法

线程间操作无效:从不是创建控件“label1”的线程访问它
收藏 0 赞 0 分享

C# WINFORM 强制让窗体获得焦点的方法代码

C# WINFORM 强制让窗体获得焦点的方法代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中方括号[]的语法及作用介绍

C#中方括号[]可用于数组,索引、属性,更重要的是用于外部DLL类库的引用。
收藏 0 赞 0 分享
查看更多