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

ad8536a1ad6bf2d213ffac84e53d0f78.png

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

853744ca847b083bdcc908753c1a1e2d.png

5. 修改你的窗体如下:

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

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" >

Margin="106,0,0,31.4" Name="btnSaveToOracle"

VerticalAlignment="Bottom" Width="75"

Click="btnSaveToOracle_Click">Save

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

using System.Windows;

using System.Data.OracleClient;

using System.Data;

using System;

namespace WpfSavePhotoToOracle

{

///

/// Interaction logic for Window1.xaml

///

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

ff67a757fa1dcc68e683b96254d5ae0f.png

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

f71564069aeb0ab45b57ae1d970f4a93.png

好了,就这么简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
存储图片Oracle: ```c# using Oracle.DataAccess.Client; using System.Drawing; using System.IO; //连接Oracle数据库 string connString = "User Id=<username>;Password=<password>;Data Source=<datasource>"; OracleConnection conn = new OracleConnection(connString); conn.Open(); //将图片转换为字节数组 Image image = Image.FromFile("<imagePath>"); MemoryStream ms = new MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] imageBytes = ms.ToArray(); //插入图片数据到Oracle string sql = "INSERT INTO <tableName> (image_column) VALUES (:imageParam)"; OracleCommand cmd = new OracleCommand(sql, conn); OracleParameter param = new OracleParameter(":imageParam", OracleDbType.Blob); param.Value = imageBytes; cmd.Parameters.Add(param); cmd.ExecuteNonQuery(); //关闭连接 conn.Close(); ``` 读取OracleBLOB字段图片并显示到PictureBox: ```c# using Oracle.DataAccess.Client; using System.Drawing; using System.IO; //连接Oracle数据库 string connString = "User Id=<username>;Password=<password>;Data Source=<datasource>"; OracleConnection conn = new OracleConnection(connString); conn.Open(); //查询图片数据 string sql = "SELECT image_column FROM <tableName> WHERE <condition>"; OracleCommand cmd = new OracleCommand(sql, conn); OracleDataReader reader = cmd.ExecuteReader(); if (reader.Read()) { //从查询结果读取图片数据 byte[] imageBytes = (byte[])reader["image_column"]; //将字节数组转换为Image对象 MemoryStream ms = new MemoryStream(imageBytes); Image image = Image.FromStream(ms); //将Image对象显示在PictureBox pictureBox1.Image = image; } //关闭连接 conn.Close(); ``` 其 `<username>`、`<password>`、`<datasource>`、`<tableName>`、`<condition>` 需要根据实际情况进行替换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值