65.9K
CodeProject 正在变化。 阅读更多。
Home

适用于 .NET 的后关系数据库简介:Matisse - 第 6 部分

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.45/5 (20投票s)

2004 年 5 月 3 日

3分钟阅读

viewsIcon

66821

downloadIcon

979

使用后关系数据库进行 ASP.NET 编程。

Sample Image - introtomatisse_part6.gif

引言

本系列文章已经介绍了 Matisse 后关系数据库的所有基础知识,以及它的优势,例如易用性和更好的性能。

本文介绍使用后关系数据库进行 ASP.NET 编程。我创建了两个演示程序来阐述本文。第一个是一个将数据与图像加载到数据库的 Windows 应用程序。第二个是一个从数据库检索图像及元数据并在 DataList 中显示它们的 ASP.NET 应用程序。这些程序很简单,但有几个技巧可以使程序更紧凑并提供更好的性能。

以下是前几篇文章列表

运行演示

要编译和运行演示应用程序,请先下载本文开头附件的源文件。在 Visual Studio .NET 2003 中创建一个新的空白解决方案,并添加三个项目:一个类库(DbSchema)、一个 Windows 应用程序(MediaDemo)和一个 ASP.NET 应用程序(MediaDemoASP),如下图所示。解压下载的 zip 文件中的所有文件,并将它们相应地添加到这三个项目中。

ASP.NET projects

在 Matisse Enterprise Manager 中,启动 ‘media’ 数据库,并导入 zip 文件中包含的 ODL 文件 demo.odl 来加载数据库模式(选择 media 数据库图标,右键单击它,选择 Schema --> Import ODL Schema)。

编译这三个 .NET 项目,并运行 MediaDemo Windows 应用程序来加载数据。您将看到以下窗口,然后选择您与其它源文件一起下载的 photos 文件夹,并单击 ‘Load Data’ 按钮将图像数据加载到数据库中。加载数据后,您可以在 ‘View Data’ 选项卡中查看导入的数据。

Loading Data

要从 Visual Studio .NET 运行 ASP.NET 演示,请选择 ‘MediaDemoASP’ 项目作为 ‘Startup Project’,并选择 ‘StartForm.aspx’ 作为 ‘Start Page’。

检索图像

ASP.NET 演示使用 DataList Web 控件显示照片列表及其描述,每页四张照片,如本文顶部的图所示。它在 SELECT 语句中使用 LIMITOFFSET 子句来限制返回的行数,从某个偏移量开始。请注意,SELECT 语句还返回 OID(Object Identifier,相当于主键)列,该列将用于高效检索图像。其余的是使用 DataList 控件的教科书式编程。

   string query = 
       "SELECT Title, Description, OID FROM Photo ORDER BY Title " +
       " LIMIT " + PageSize +
       " OFFSET " + (CurrentPage * PageSize);

   // For DataList
   MtCommand cmd = db.CreateCommand();
   cmd.CommandText = query;
   MtDataReader reader = (MtDataReader) cmd.ExecuteReader();
   DataList1.DataSource = reader;
   DataList1.DataBind();
   reader.Close();

在包含 DataList 的 Web 窗体中,使用 OID 列指定缩略图 URL,如下所示

<asp:Image … ImageUrl=
'<%# PhotoThumbnailURL((string) DataBinder.Eval(Container.DataItem, "OID")) %>'>

OID 作为输入参数的 PhotoThumbnailURL 定义如下

  public string PhotoThumbnailURL(string oid) 
  {
      return "ReadThumbnail.aspx?oid=" + oid + 
             "&dbname=" + (string) ViewState["DbName"];
  }

来自 ReadThumbnail.aspx.cs 的下一段代码将传入的 OID 字符串解析为整数。然后,它使用一个接受 OID 的构造函数(A 行)创建一个 Photo 对象,该对象是 Matisse 对象。因为它不使用 SQL 语句,所以它从数据库中更快地检索对象。要获取缩略图数据,请访问 Photo 对象的 Thumbnail 属性(B 行)。

  byte[] imgdata = null;
  db.Open();
  db.StartVersionAccess();

  /* Request.QueryString["oid"] returns OID in the format of '0x1234' */
  int oid = Int32.Parse(Request.QueryString["oid"].Substring(2), 
      System.Globalization.NumberStyles.AllowHexSpecifier);

  // retrieve the Movie object with the OID
  Photo photo = new Photo(db, oid);   // line A
  
  // retrieve thumbnail image data of the movie from the database
  imgdata = photo.Thumbnail;          // line B

  db.EndVersionAccess();
  db.Close();

  if ( null != imgdata )
      Response.BinaryWrite(imgdata);

摘要

本文展示了一个简单的 ASP.NET 应用程序,该应用程序从 Matisse 数据库检索图像数据及一些描述,并使用 DataList 控件显示数据。

<< 上一篇 | 下一篇 >>

历史

  • 2004 年 5 月 3 日:初始版本

许可证

本文没有明确附加许可,但可能包含在文章文本或下载文件中。如有疑问,请通过下方的讨论版块联系作者。作者可能使用的许可列表可以在 此处找到。

© . All rights reserved.