用一字段存储图片信息和文字信息的处理
2007-12-23 06:46
302 查看
前几天做个公司的宣传网站,学习了前辈们的经验把数据库设计成这样:
商品:
(access数据库)
一基本表:
商品共有的属性及值;
一扩展属性名称表(也可以理解为属性名称表):
含ID和名称两字段;
一扩展属性表:
ID/属性ID/产品ID/属性值.
属性值勤中有存图片和文字类的信息.
图片只存文件名.
但取出时要输出 <img> 把图片显示出来;
而一般文字不需要这样处理.
所以要在取出时先判断,再分别处理.
这个问题我已经自己写了一个控件作了处理.
我把代码贴出来,大家交流一下,也希望能有更好的方法处理这类问题.
using System;
using System.Data;
using System.Web.UI;
using System.ComponentModel;
using Model;
using BLL;
namespace WareImgOutput
...{
/**//// <summary>
/// WaresImg 的摘要说明 输出商品的简要信息,包括一张缩略图
/// </summary>
[DefaultProperty("SelectedId")]
[ToolboxData("<{0}:RenderControl runat=server></{0}:RenderControl>")]
public class WaresImg : Control
...{
public WaresImg()
...{
//
// TODO: 在此处添加构造函数逻辑
//
}
// 实现 SelectedId
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string SelectedId
...{
get
...{
String s = (String)ViewState["SelectedId"];
return ((s == null) ? String.Empty : s);
}
set
...{
ViewState["SelectedId"] = value;
}
}
// 重写Render方法
protected override void Render(HtmlTextWriter writer)
...{
DataTable dt = null;
if (SelectedId != null && SelectedId != "")
...{
int _id = Convert.ToInt32(SelectedId);
dt = PropertyManager.Instance().GetAllPropertyByID(_id);
if (dt != null && dt.Rows.Count > 0)
...{
foreach (DataRow dr in dt.Rows)
...{
//只输出缩略图片
if (dr["ex_propertyName"].ToString() == "图片")
...{
writer.AddAttribute("src", "images/" + "s_" + Uri.UnescapeDataString(dr["property_value"].ToString()));
writer.AddAttribute("alt", Uri.UnescapeDataString(dr["ware_name"].ToString()));
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag();
break;//只输出一张图片
}
}
}
else
...{
writer.Write("商品没有属性.");
}
}
else
...{
writer.Write("没有选择商品.");
}
}
}
}
这样做,目的是让管理者可以无限制的添加商品的属性,包括多张图片.
但有一个不好的就是损失了性能.
商品:
(access数据库)
一基本表:
商品共有的属性及值;
一扩展属性名称表(也可以理解为属性名称表):
含ID和名称两字段;
一扩展属性表:
ID/属性ID/产品ID/属性值.
属性值勤中有存图片和文字类的信息.
图片只存文件名.
但取出时要输出 <img> 把图片显示出来;
而一般文字不需要这样处理.
所以要在取出时先判断,再分别处理.
这个问题我已经自己写了一个控件作了处理.
我把代码贴出来,大家交流一下,也希望能有更好的方法处理这类问题.
using System;
using System.Data;
using System.Web.UI;
using System.ComponentModel;
using Model;
using BLL;
namespace WareImgOutput
...{
/**//// <summary>
/// WaresImg 的摘要说明 输出商品的简要信息,包括一张缩略图
/// </summary>
[DefaultProperty("SelectedId")]
[ToolboxData("<{0}:RenderControl runat=server></{0}:RenderControl>")]
public class WaresImg : Control
...{
public WaresImg()
...{
//
// TODO: 在此处添加构造函数逻辑
//
}
// 实现 SelectedId
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string SelectedId
...{
get
...{
String s = (String)ViewState["SelectedId"];
return ((s == null) ? String.Empty : s);
}
set
...{
ViewState["SelectedId"] = value;
}
}
// 重写Render方法
protected override void Render(HtmlTextWriter writer)
...{
DataTable dt = null;
if (SelectedId != null && SelectedId != "")
...{
int _id = Convert.ToInt32(SelectedId);
dt = PropertyManager.Instance().GetAllPropertyByID(_id);
if (dt != null && dt.Rows.Count > 0)
...{
foreach (DataRow dr in dt.Rows)
...{
//只输出缩略图片
if (dr["ex_propertyName"].ToString() == "图片")
...{
writer.AddAttribute("src", "images/" + "s_" + Uri.UnescapeDataString(dr["property_value"].ToString()));
writer.AddAttribute("alt", Uri.UnescapeDataString(dr["ware_name"].ToString()));
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag();
break;//只输出一张图片
}
}
}
else
...{
writer.Write("商品没有属性.");
}
}
else
...{
writer.Write("没有选择商品.");
}
}
}
}
这样做,目的是让管理者可以无限制的添加商品的属性,包括多张图片.
但有一个不好的就是损失了性能.
相关文章推荐
- 在数据库中处理image字段【把图片存储到数据库并显示出来】
- 在数据库中处理image字段【把图片存储到数据库并显示出来】
- PHP获取photoshop写入图片文字信息的方法
- 视频处理 视频上或者文字 图形 图片
- 存储联系人信息(进程com.motorola.contacts)意外停止 事件提醒eventreminder异常 处理方法
- iOS 图片压缩处理,本地存储
- 模拟字符串处理函数 stuff 的存储过程,对 ntext 字段进行stuff
- 在用户上传的图片上加上版权或者一些其他的附加文字信息
- C#以二制的方式同时存储文字和图片到sqlserver,并读取
- UIImage 图片处理:截图,缩放,设定大小,存储
- UIImage 图片处理:截图,缩放,设定大小,存储
- OpenCV 数组存储图片像素值,便于后期图像处理
- 如何将图片以Image类型存储到数据库 如何从数据库中读取Image类型的字段
- 如何对CLOB字段进行全文检索和oracle中大文字量的处理
- UIImage 图片处理:截图,缩放,设定大小,存储
- java图片处理 文字水印 图片水印 缩放 补白
- 图片处理工具类: 功能:缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等
- 图片处理——使用NDK添加文字和图片水印
- oracle服务器存储信息乱码问题处理
- 将Oracle中Blob字段存储的图片转换成字节流直接输出到浏览器