将 C# 的图像对象保存到 Oracle BLOB 字段中

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

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

 
1 CREATE TABLE GAMBAR
2 (
3   GAMBAR_BIN BLOB
4 );
   

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

 

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

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

将 C# 的图像对象保存到 Oracle BLOB 字段中_第1张图片

5. 修改你的窗体如下:

将 C# 的图像对象保存到 Oracle BLOB 字段中_第2张图片

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

view source
print ?
01 <Window x:Class="WpfSavePhotoToOracle.Window1"
02     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
03     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
04     xmlns:s="clr-namespace:ImageViewer;assembly=ImageViewer"
05     Title="Window1" Height="324" Width="392" >
06     <Grid>
07         <s:ImageViewer Name="imgViewer" />
08         <Button Height="23" HorizontalAlignment="Left"
09                 Margin="106,0,0,31.4" Name="btnSaveToOracle"
10                 VerticalAlignment="Bottom" Width="75"
11                 Click="btnSaveToOracle_Click">Save</Button>
12     </Grid>
13 </Window>
6. 下一步也是最后一步,我们进入代码逻辑,双击 Save 按钮然后修改代码如下:
view source
print ?
01 using System.Windows;
02 using System.Data.OracleClient;
03 using System.Data;
04 using System;
05   
06 namespace WpfSavePhotoToOracle
07 {
08     /// <summary>
09     /// Interaction logic for Window1.xaml
10     /// </summary>
11     public partial class Window1 : Window
12     {
13         OracleConnection conn;
14         OracleCommand cmd;
15   
16         public Window1()
17         {
18             InitializeComponent();
19         }
20  
21         private void btnSaveToOracle_Click(object sender, RoutedEventArgs e)
22         {
23             try
24             {
25                 conn = new OracleConnection(
26                     "Data Source=localhost;" +
27                     "Persist Security Info=True;" +
28                     "User ID=C07;Password=C07;Unicode=True");
29                 conn.Open();
30  
31                 cmd = new OracleCommand(
32                     "INSERT INTO GAMBAR VALUES(:blobtodb)",
33                     conn);
34                 cmd.CommandType = CommandType.Text;
35   
36                 OracleParameter param = cmd.Parameters.Add("blobtodb",
37                     OracleType.Blob);
38                 param.Direction = ParameterDirection.Input;
39                 param.Value = imgViewer.ImageBinaryData;
40  
41                 cmd.ExecuteNonQuery();
42  
43                 conn.Close();
44                 MessageBox.Show("Image saved");
45             }
46             catch (Exception ex)
47             {
48                 MessageBox.Show("failed to save (" + ex.Message + ")");
49             }
50         }
51     }
52 }

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

将 C# 的图像对象保存到 Oracle BLOB 字段中_第3张图片

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

将 C# 的图像对象保存到 Oracle BLOB 字段中_第4张图片

好了,就这么简单。

你可能感兴趣的:(将 C# 的图像对象保存到 Oracle BLOB 字段中)