从 Oracle BLOB 字段中加载图像并显示到 WPF 图像控件

红薯 发布于 2012/09/22 07:43
阅读 1K+
收藏 1
image

上一篇文章我们介绍了将图像保存到 BLOB 字段中,今天我们要讲的是如何将这个写入的数据读出来并显示。别担心,这个教程同样很简单,这里我们会用到 DataBinding 技术,在此之前你需要先了解这项技术,而且我很懒,我不想在这里解释这个技术。

1. 创建一个新的 WPF 应用并取名为 WpfLoadOracleBlob.

2. 这里我们继续使用之前教程中用到的数据库,因此无需再创建新表。修改窗体如下图所示:

image

我知道你们大多数人都很懒,所以还是给你提供了 XAML 代码:

<Window x:Class="WpfLoadOracleBlob.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
    <Grid>
        <ComboBox Height="23" Margin="12,12,12,0" Name="comboBox1" 
                  VerticalAlignment="Top" ItemsSource="{Binding}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=ROWNUM}" />
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
        <Image Margin="12,41,12,12" Name="image1" Stretch="Fill" 
               Source="{Binding ElementName=comboBox1, 
                Path=SelectedItem.GAMBAR_BIN}"/>
    </Grid>
</Window>

在 xaml 代码中你会看到 {Binding} ,你想知道吗?那就去搜索一下吧 :)

3. 接下来是代码逻辑,用来从 BLOB 中加载图像
using System.Windows;
using System.Data.OracleClient;
using System.Data;

namespace WpfLoadOracleBlob
{
 /// <summary>
 /// Interaction logic for Window1.xaml
 /// </summary>
 public partial class Window1 : Window
 {
  public Window1()
  {
   InitializeComponent();
  }

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

   OracleDataAdapter ad = new OracleDataAdapter(
   "SELECT ROWNUM, GAMBAR_BIN FROM GAMBAR",
   conn);

   DataTable tb = new DataTable();
   ad.Fill(tb);
   comboBox1.DataContext = tb;

   conn.Close();
  }
 }
}

关键点是 comboBox1.DataContext = tb; 这意味着 comboBox1 控件绑定了来自 SELECT 查询的结果数据。

4. 现在可以测试你的应用了:

image

我能告诉你的就是这么多了:)

英文原文OSCHINA原创翻译

加载中
返回顶部
顶部