一、建立数据表

--==================================
--==================================
--TABLE NAME: E_PHOTO
--AUTHOR:XIAOPENG CHENG
--CREATE DATE: 2006-11-1
--DESCRIPTION:SAVE PHTO INFORMATION
--==================================
--==================================

if exists (select * from sysobjects where id = object_id('dbo.E_PHOTO'))
drop table dbo.E_PHOTO
GO
create table  E_PHOTO
(
    USER_NAME NVARCHAR(40) NOT NULL,    --USER NAME
    PHOTO_TYPE_ID    int NOT NULL,    --PHOTO TYPE
    PHOTO_ID    NVARCHAR(30) NOT NULL,    --PHOTO NAME
    PHOTO    IMAGE NOT NULL,        --PHOTO INFORMATION 
    PHOTO_DESC    NVARCHAR(3000),    --PHOTO DESCRIPTION INFORMATION
    UPLOAD_DATE        SMALLDATETIME,    --UPLOAD DATE        
    CONSTRAINT PHOTO PRIMARY KEY (USER_NAME,PHOTO_ID,PHOTO_TYPE_ID)    --PRIMARY KEY
)
GO

--==================================
--==================================
--TABLE NAME: E_PHOTO_TYPE
--AUTHOR:XIAOPENG CHENG
--CREATE DATE: 2006-11-3
--DESCRIPTION:SAVE PHTO TYPE INFORMATION
--==================================
--==================================

if exists (select * from sysobjects where id = object_id('dbo.E_PHOTO_TYPE'))
drop table dbo.E_PHOTO_TYPE
GO
create table  E_PHOTO_TYPE
(
    USER_NAME NVARCHAR(40) NOT NULL,    --USER NAME
    PHOTO_TYPE_CODE    int identity(1,1) NOT NULL,    --PHOTO TYPE CODE 
    PHOTO_TYPE_NAME    NVARCHAR(30) NOT NULL,    --PHOTO TYPE NAME
    IF_USING    INT DEFAULT 0,    --IF USING //USING:0;NOT USING 1;
    CONSTRAINT PHOTO_TYPE PRIMARY KEY(USER_NAME,PHOTO_TYPE_CODE)    --PRIMARY KEY
)
GO

二、建立页面,对图片类型进行分类
由于本人,在上传图片时,对图片进行了分类,因此当用户进行图片浏览的时候,对图片进行了分类,当用户单击“ALL Photo”时,将在另外的一个页面进行显示,以下是进行图片类型分类的HTML页面代码:

<%...@ Page Language="C#" MasterPageFile="~/MasterPage2.master" AutoEventWireup="true"
    CodeFile="ListPhotoType.aspx.cs" Inherits="ListPhotoType" Title="List Photo Type" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <strong>List The Photo Type:<br />
    </strong>
    <br />
    <asp:BulletedList ID="BulletedList1" runat="server" BulletStyle="Numbered" DisplayMode="LinkButton"
        OnClick="BulletedList1_Click">
    </asp:BulletedList>   
</asp:Content>

从上面的代码,我们可以看出,我们用了模板页,在页面中,我们只用了一个BulletedList控件,显示的模式是用的连接an钮,列表的模式是用在左边有一些标题,在页面上有个对每一项都有一个单击事件发生。以下是此页面对应的后台编程页面:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class ListPhotoType : System.Web.UI.Page
...{
    PhotoManage manage;
    protected void Page_Load(object sender, EventArgs e)
    ...{
        if(!(Convert.ToBoolean(Session["isLogin"])))
        ...{
            Response.Redirect("Login.aspx");
        }
        if(!Page.IsPostBack)
        ...{
            manage = new PhotoManage(Session["name"].ToString());
            this.BulletedList1.DataSource=manage.GetUserPhotoType(Session["name"].ToString());
            this.BulletedList1.DataTextField = "Photo_Type_Name";
            this.BulletedList1.DataValueField = "Photo_Type_Code";
            this.BulletedList1.DataBind();
            this.BulletedList1.Items.Insert(0, new ListItem("ALL Photo", "A"));
        }
    }
    protected void BulletedList1_Click(object sender, BulletedListEventArgs e)
    ...{
        string strURL=string.Format("ListPhoto.aspx?code={0}", Server.UrlEncode(this.BulletedList1.Items[e.Index].Value));
        //this.BulletedList1.Attributes.Add("onclick", string.Format("window.open('{0}','newwinow');",strURL));
        Response.Redirect(strURL);
    }
}

从此后台页面编程,我们可以看出,首先设置数据源,进行了数据绑定,可以让数据从数据库中读取, 显示在页面,为了将全部数据显示出来,我们在BulletedLista控件的第一个位置添加了"ALL Photo",其中的值是“A”,在控件的单击事件中,我们将值取出,之后传递到ListPhoto.aspx页面进行处理。以下是ListPhoto.aspx页面的HTML代码:

<%...@ Page Language="C#" MasterPageFile="~/MasterPage2.master" AutoEventWireup="true"
    CodeFile="ListPhoto.aspx.cs" Inherits="ListPhoto" Title="List Photo" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <asp:DataList ID="dlPhoto" runat="server" RepeatColumns="4" RepeatDirection="Horizontal"
        CellPadding="0" Width="790px" OnItemCommand="dlPhoto_ItemCommand" OnItemDataBound="dlPhoto_ItemDataBound">
        <ItemTemplate>
            <asp:ImageButton Width="185" ID="ibtnPhoto" ImageUrl='<%# FormatURL(DataBinder.Eval(Container,"DataItem.user_name"),DataBinder.Eval(Container, "DataItem.photo_type_id"),DataBinder.Eval(Container, "DataItem.photo_id")) %>'
                runat="server" AlternateText="click list Details information!" CommandName="Detail"
                CommandArgument="Detail" /><br />
            <asp:Label ID="lblPhotoType" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.photo_type_id")%>'
                Visible="false"></asp:Label><br />
            <asp:Label ID="lblPhotoName" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.photo_id")%>'
                Visible="false"></asp:Label>
        </ItemTemplate>
    </asp:DataList>
</asp:Content>

在此页面,我们可以看出,在此页面,我们只用了一个DataList控件,其中里面用了一个ImageButton用来显示图片,两个标签,一个是此种图片的类型,一个是图片的名称,我们可以从HMTL中我们可以看出,ImageButton控件的ImageUrl属性是通过调用一个函数实现的,里面传递了三个参数,都是通过绑定表达式,输入的。下面是两个标签,用来保存信息。下面的代码是,此页面对应的后台编程页面:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class ListPhoto : System.Web.UI.Page
...{
    protected void Page_Load(object sender, EventArgs e)
    ...{
        if(!Page.IsPostBack)
        ...{
            if(!(Convert.ToBoolean(Session["isLogin"])))
            ...{
                Response.Redirect("Login.aspx");
            }
            else
            ...{
                System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DogsManagerConnectionString"].ToString());
                string code,strSQL;
                code = Request.QueryString["code"].ToString();
                if(code == "A")
                ...{
                    strSQL = string.Format("select user_name,photo_type_id,photo_id,photo from E_Photo where user_name='{0}'", Session["name"].ToString());
                }
                else
                ...{
                    strSQL = string.Format("select user_name,photo_type_id,photo_id,photo from E_Photo where user_name='{0}' AND photo_type_id={1}", Session["name"].ToString(),code);
                }
                System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(strSQL, conn);
                try
                ...{
                    conn.Open();
                    this.dlPhoto.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    this.dlPhoto.DataBind();
                }
                catch(System.Data.SqlClient.SqlException sql)
                ...{
                    Response.Write("wrong information:<br>" + sql.Message);
                }
                finally
                ...{
                    cmd.Dispose();
                    conn.Close();
                }
            }
        }
    }

    protected string FormatURL(object userName, object typeID, object photoID)
    ...{
        return string.Format("ReadImage.aspx?userName={0}&typeID={1}&photoID={2}",
            userName.ToString(), typeID.ToString(), photoID.ToString());
    }
    protected void dlPhoto_ItemCommand(object source, DataListCommandEventArgs e)
    ...{
        if(e.CommandArgument.ToString() == "Detail")
        ...{
            string userName = Session["name"].ToString();
            string typeId = ((Label)e.Item.FindControl("lblPhotoType")).Text;
            string photoId = ((Label)e.Item.FindControl("lblPhotoName")).Text;
            ImageButton ibtnDetail = (ImageButton)e.Item.FindControl("ibtnPhoto");
            string Format = string.Format("ListPhotoDetail.aspx?userName={0}&typeID={1}&photoID={2}",
                userName, typeId, photoId);
            ibtnDetail.Click += new ImageClickEventHandler(ibtnDetail_Click);
        }
    }

    void ibtnDetail_Click(object sender, ImageClickEventArgs e)
    ...{
        Response.Redirect("http://www.baidu.com");
    }
    protected void dlPhoto_ItemDataBound(object sender, DataListItemEventArgs e)
    ...{
        //string userName = Session["name"].ToString();
        //string typeId = ((Label)e.Item.FindControl("lblPhotoType")).Text;
        //string photoId = ((Label)e.Item.FindControl("lblPhotoName")).Text;
        //ImageButton ibtnDetail = (ImageButton)e.Item.FindControl("ibtnPhoto");
        //string Format = string.Format("ListPhotoDetail.aspx?userName={0}&typeID={1}&photoID={2}",
        //    userName, typeId, photoId);
        //ibtnDetail.Attributes.Add("onclick", "Response.Write(" + Format + ")");
    }
}

此,后台代码也是比较的多的,在这些代码中,我们可以看到一个FormatURL函数,这和我们在HTML代码中看到的一致,用来将每绑定一个,定位到一个页面,将数据图片信息从数据库中读取出来。这个页面是ReadImage.aspx页面,这个过会再说。在这个后台编程页面中,我们在PageLoad中我们可以看到了我们把传递过来的参数code进行了判断,主要是使判断,是将某个类型的显示出来,还是将所有的显示出来,如果是"A",则是此用户的相关的所有图片信息显示出来,如果是其他,将此类的从数据库中读取,显示出来。读者可以看到,本人之所以用ImageButtonk控件,主要还是想实现另外一个功能,单击图片将此图片的详细信息显示出来,可以我还没有调出来,调出来后,再写吧。在此页面,主要工作是,当绑定一个时,调用FormatURL函数,跳转到ReadImage.aspx页面对图片读取,之后,一次类推。以下是:ReadImage.aspx页面的后台编程代码,此页面仅此作个处理,没有HTML代码了:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class ReadImage : System.Web.UI.Page
...{
    protected void Page_Load(object sender, EventArgs e)
    ...{
        if (!Page.IsPostBack)
        ...{
            string username = Request.QueryString["userName"].ToString();
            string typeid = Request.QueryString["typeID"].ToString();
            string photoid = Request.QueryString["photoID"].ToString();

            System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DogsManagerConnectionString"].ToString());
            string strSQL = string.Format("select photo from E_Photo where user_name='{0}' and photo_type_id=" +
                "{1} and photo_id='{2}'", username, typeid, photoid);
            System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(strSQL, conn);
            try
            ...{
                conn.Open();
                System.Data.SqlClient.SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                if (reader.Read())
                ...{
                    Response.Clear();
                    Response.ContentType = "images/*";
                    Response.BinaryWrite((byte[])reader["photo"]);
                }
                conn.Close();
            }
            catch (System.Data.SqlClient.SqlException sql)
            ...{
                throw sql;
            }
            Response.End();
        }
    }
}

此页面,接受传递过来的三个参数,是为了准确定位一条记录,我们从数据表中,我们也就看到,这个表示三个联合主键,之后,进行读取,并且设置ContentType为“images/*”类型,之后输出。至此,我们的图片也就可以从数据库中读取出来了,并显示在页面上,但图片毕竟是从数据库中读取出来的,因此,有时我们会感觉,我们的图片显示的有点慢,但毕竟是一个一个从数据库中读取出来的,肯定是慢了点。以下几个页面时我测试用的读取的图片信息:

至此,我的从SQL Server 2000数据库中读取Image类型数据并显示在页面上,已经完成了, 其实,遇到问题,多上网查查,写程序,初级阶段就是比葫芦画瓢,这个方法,我也是从网上找到了。相信问题都可以解决的!

将SQL Server 2000数据库Image类型图片数据显示在页面上相关推荐

  1. 同步SQL Server 2000 数据库

    为什么要同步SQL Server 2000 数据库,它都用在什么场合 数据实时备份同步,数据库服务器出问题时我们也有其正常工作时的备份 数据实时备份同步,一台服务器负载不起时,可以用来做负载均衡 数据 ...

  2. sqlserver2000换成mysql_将Microsoft SQL Server 2000数据库转换成MySQL数据库

    1. 下载并安装MyODBC.(如果是XP请下载5.3的旧版本,8.x的新版本运行有问题) 2. 创建一个空的MySQL数据库. 3. 在Windows >> 控制面板 >> ...

  3. SQL Server 2000数据库程序设计

    第1章 SQL Server概述 1. 有个用户的计算机不能连接到中心机房的SQL Server 2000上.你在调试过程中发现这个用户的计算机的网络功能是正常的,而且其他用户都能正常地连接到SQL ...

  4. 使用JDBC驱动程序访问SQL Server 2000数据库(实例)

    <!-- 使用JDBC驱动程序访问SQL Server 2000数据库 --> <% String drivername="com.microsoft.jdbc.sqlse ...

  5. window xp系统安装php环境_Windows Server 2003及XP系统如何安装SQL Server 2000数据库?

    年头年初节假日就是小编的梗,忙得不可开交,这不越冷越刮风昨天服务器又崩了,折腾了一天安装好Windows Server 2003和IIS(这系统是有点老了,主要是单位机子和各系统也有点年头了,没办法) ...

  6. 如何手工完全卸载SQL SERVER 2000数据库

    手工卸载SQL SERVER 2000数据库 (转自http://blog.sina.com.cn/s/blog_5d57ca730100b07d.html)           部分用户的SQL S ...

  7. 登陆SQL Server 2000数据库提示超时已过期的解决方法

    登陆SQL Server 2000数据库提示超时已过期的解决方法 参考文章: (1)登陆SQL Server 2000数据库提示超时已过期的解决方法 (2)https://www.cnblogs.co ...

  8. SQL SERVER 2000 数据库备份和SQL Server数据库备份有两种方式,

    SQL SERVER 2000 数据库备份与还原时间:2006-08-30 10:23:23  来源:CSDN  作者:佚名备份数据库,例如: BACKUP DATABASE Northwind    ...

  9. 如何在Windows 10 上安装SQL Server 2000数据库?

    Win10本身是一个兼容性较好的操作系统,目前有很多人在咨询如何在Windows 10 上安装 SQL Server 2000数据库,都没有成功过.主要是卡在了安装过程中的mdac2.6 安装上,一直 ...

最新文章

  1. 二十四,Arrays和比较器
  2. c++ 获取64位进程模块地址_针对银行木马BokBot核心模块的深入分析
  3. sdut 2127 树-堆结构练习——合并果子之哈夫曼树 优先队列
  4. 99.999%,提升ElasticSearch稳定性的秘密
  5. 【翻译】WPF 中附加行为的介绍 Introduction to Attached Behaviors in WPF
  6. Android开发笔记(十三)视图绘制的几个方法
  7. 小峰servlet/jsp(2)
  8. 实习 | 京东金融个人风险管理中心(地点:北京)
  9. tcp/ip ---IP路由选择
  10. Go语言编程(旧读书笔记)
  11. 深度:企业为什么需要一个平台级的OA产品?
  12. Flink Web UI不能访问
  13. Ubuntu 桌面美化: 1.命令行terminal显示时间用户conda环境2.桌面自动更换轮换壁纸Bing Wallpaper
  14. InputNumber 数字输入框
  15. what this book can do for you ?
  16. html无法获取图片高宽,如何解决谷歌浏览器下jquery无法获取图片的尺寸
  17. L19-python核心编程-面向对象编程(day1、2)
  18. 波士顿动力狗 SPOT 权威购买指北
  19. 初识sscanf_s
  20. Bootstrap+Jquery的日历效果实现

热门文章

  1. IRDye 800CW 红外染料IRDye 800CW NHS Ester/Maleimide/Carboxylate/Carboxylic acid
  2. 第十一届蓝桥杯C/C++ 大学 B 组大赛软件类省赛
  3. CEO、COO、CFO、CTO是什么意思?
  4. 读写c语言编程,c语言文件读写示例(c语言文件操作)
  5. 紫光fpga logos2 pango design 开发工具 黑金 axp100开发板资料 带 ddr 以及高速收发器例子
  6. adum1201参考电路_【VIP专享】数字式隔离器ADUM1201在RS232总线通信系统中的应用
  7. react引入百度地图详解(配置智能检索反向地址解析获取实际地标)
  8. kali渗透80端口的php,一次对内网服务器的KALI渗透测试
  9. 磁传感器在物联网中的应用
  10. 《在(虚拟机)ubuntu16.04上进行openwrt环境搭建及源码下载》