北京中心
│
上海中心
│
青岛中心
│
香港中心
│
网上报名
│
在线问答
网站首页
学历教育
学院介绍
教学环境
师资介绍
公司作品
课程设置
学生作品
报名须知
就业指导
学生访谈
活动合作
教学成果
交流社区
黑板报
电子杂志
图书出版
北京中心
上海中心
青岛中心
香港中心
English
开课时间
优惠政策
付款方式
乘车方式
招生简章
关于就业
师资介绍
学生作品
关于食宿
常见问题
您在这里
首页
>
交流社区
社区首页
游客:
注册
|
登录
|
统计
|
帮助
水晶石数字论坛
»
网页设计及多媒体设计专区
» ASP.NET将物件序列化成Binary储存至DB or File
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题:
[网络编程]
ASP.NET将物件序列化成Binary储存至DB or File
店小一
UID 10001
精华 0
积分 0
帖子 2233
积分 11165 分
水晶石 0 颗
学徒 0 级
阅读权限 10
注册 2008-7-15
#1
使用道具
发表于 2008-8-13 16:09
资料
个人空间
短消息
加为好友
ASP.NET将物件序列化成Binary储存至DB or File
最近有人在讨论这个问题..小弟很少玩这个东西..就到网路上找了一些资源..教大家如何将物件序列化成Binary Data..然后储存到资料库或档桉裡..
当然可以序列化..就一定可以反序列化了...其实序列化格式不一定要是Binary Data..也可以是XML or SOAP Data的...
首先准备一个DB,结构如下:
接下来就是代码了
以下为引用的内容:
asp.net(c#)
SerializingObjects.aspx
view plaincopy to clipboardprint?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SerializingObjects.aspx.cs" Inherits="SerializingObjects" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
" >
<head runat="server">
<title>Serializing Objects</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp
ropDownList ID="ddlType" runat="server">
<asp
istItem Value="0">资料库</asp
istItem>
<asp
istItem Value="1">档桉</asp
istItem>
</asp
ropDownList>
<asp:Button ID="btnLoad" runat="server" Text="读取" />
<asp
abel ID="Label1" runat="server" Text="编号:"></asp
abel>
<asp:TextBox ID="txbId" runat="server"></asp:TextBox>
<asp
abel ID="Label2" runat="server" Text="名称:"></asp
abel>
<asp:TextBox ID="txbName" runat="server"></asp:TextBox>
<asp
abel ID="Label3" runat="server" Text="电话:"></asp
abel>
<asp:TextBox ID="txbTel" runat="server"></asp:TextBox>
<asp
abel ID="Label4" runat="server" Text="地址:"></asp
abel>
<asp:TextBox ID="txbAddress" runat="server"></asp:TextBox>
<asp:Button ID="btnAdd" runat="server" Text="新增" /></div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SerializingObjects.aspx.cs" Inherits="SerializingObjects" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
" >
<head runat="server">
<title>Serializing Objects</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp
ropDownList ID="ddlType" runat="server">
<asp
istItem Value="0">资料库</asp
istItem>
<asp
istItem Value="1">档桉</asp
istItem>
</asp
ropDownList>
<asp:Button ID="btnLoad" runat="server" Text="读取" /><br />
<asp
abel ID="Label1" runat="server" Text="编号:"></asp
abel>
<asp:TextBox ID="txbId" runat="server"></asp:TextBox>
<br />
<asp
abel ID="Label2" runat="server" Text="名称:"></asp
abel>
<asp:TextBox ID="txbName" runat="server"></asp:TextBox>
<br />
<asp
abel ID="Label3" runat="server" Text="电话:"></asp
abel>
<asp:TextBox ID="txbTel" runat="server"></asp:TextBox><br />
<asp
abel ID="Label4" runat="server" Text="地址:"></asp
abel>
<asp:TextBox ID="txbAddress" runat="server"></asp:TextBox>
<asp:Button ID="btnAdd" runat="server" Text="新增" /></div>
</form>
</body>
</html>
SerializingObjects.aspx.cs
view plaincopy to clipboardprint?
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;
using System.Data.SqlClient;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public partial class SerializingObjects : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnAdd_Click(object sender, EventArgs e)
{
if (this.ddlType.SelectedIndex == 0)
{
SaveToDB();
}
else
{
SaveToFile();
}
}
//存至资料库(Binary Serialization)
protected void SaveToDB()
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
using (MemoryStream ms = new MemoryStream())
{
conn.Open();
Member mem = new Member();
mem.Id = this.txbId.Text;
mem.Name = this.txbName.Text;
mem.Tel = this.txbTel.Text;
mem.Address = this.txbAddress.Text;
BinaryFormatter b = new BinaryFormatter();
b.Serialize(ms, mem);
ms.Seek(0, 0);
string sql = "insert into member values(@data)";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@data", SqlDbType.Binary).Value = ms.ToArray();
cmd.ExecuteNonQuery();
}
}
}
//由资料库读取(Binary Serialization)
protected void LoadFromDB()
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
using (MemoryStream ms = new MemoryStream())
{
conn.Open();
string sql = "select data from member";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adapter.Fill(dt);
if (dt.Rows.Count > 0)
{
byte[] buffer = (byte[])dt.Rows[dt.Rows.Count-1][0];
ms.Write(buffer, 0, buffer.Length);
ms.Seek(0, 0);
BinaryFormatter b = new BinaryFormatter();
Member mem = new Member();
mem = (Member)b.Deserialize(ms);
this.txbId.Text = mem.Id;
this.txbName.Text = mem.Name;
this.txbTel.Text = mem.Tel;
this.txbAddress.Text = mem.Address;
}
}
}
}
//存至档桉(Binary Serialization)
protected void SaveToFile()
{
string path = Server.MapPath("member.dat");
using (Stream s = File.Open(path, FileMode.Create))
{
Member mem = new Member();
mem.Id = this.txbId.Text;
mem.Name = this.txbName.Text;
mem.Tel = this.txbTel.Text;
mem.Address = this.txbAddress.Text;
BinaryFormatter b = new BinaryFormatter();
b.Serialize(s, mem);
}
}
//由档桉读取(Binary Serialization)
protected void LoadFromFile()
{
string path = Server.MapPath("member.dat");
if (File.Exists(path))
{
using (Stream s = File.Open(path, FileMode.Open))
{
BinaryFormatter b = new BinaryFormatter();
Member mem = new Member();
mem = (Member)b.Deserialize(s);
this.txbId.Text = mem.Id;
this.txbName.Text = mem.Name;
this.txbTel.Text = mem.Tel;
this.txbAddress.Text = mem.Address;
}
}
}
protected void btnLoad_Click(object sender, EventArgs e)
{
if (this.ddlType.SelectedIndex == 0)
{
LoadFromDB();
}
else
{
LoadFromFile();
}
}
}
[Serializable]
public class Member
{
private string _id = string.Empty;
private string _name = string.Empty;
private string _tel = string.Empty;
private string _address = string.Empty;
public Member()
{
}
public Member(string id, string name,string tel,string address)
{
_id = id;
_name = name;
_tel = tel;
_address = address;
}
public string Id
{
get { return _id; }
set { _id = value; }
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public string Tel
{
get { return _tel; }
set { _tel = value; }
}
public string Address
{
get { return _address; }
set { _address = value; }
}
}
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;
using System.Data.SqlClient;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public partial class SerializingObjects : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnAdd_Click(object sender, EventArgs e)
{
if (this.ddlType.SelectedIndex == 0)
{
SaveToDB();
}
else
{
SaveToFile();
}
}
//存至资料库(Binary Serialization)
protected void SaveToDB()
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
using (MemoryStream ms = new MemoryStream())
{
conn.Open();
Member mem = new Member();
mem.Id = this.txbId.Text;
mem.Name = this.txbName.Text;
mem.Tel = this.txbTel.Text;
mem.Address = this.txbAddress.Text;
BinaryFormatter b = new BinaryFormatter();
b.Serialize(ms, mem);
ms.Seek(0, 0);
string sql = "insert into member values(@data)";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@data", SqlDbType.Binary).Value = ms.ToArray();
cmd.ExecuteNonQuery();
}
}
}
//由资料库读取(Binary Serialization)
protected void LoadFromDB()
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
using (MemoryStream ms = new MemoryStream())
{
conn.Open();
string sql = "select data from member";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adapter.Fill(dt);
if (dt.Rows.Count > 0)
{
byte[] buffer = (byte[])dt.Rows[dt.Rows.Count-1][0];
ms.Write(buffer, 0, buffer.Length);
ms.Seek(0, 0);
BinaryFormatter b = new BinaryFormatter();
Member mem = new Member();
mem = (Member)b.Deserialize(ms);
this.txbId.Text = mem.Id;
this.txbName.Text = mem.Name;
this.txbTel.Text = mem.Tel;
this.txbAddress.Text = mem.Address;
}
}
}
}
//存至档桉(Binary Serialization)
protected void SaveToFile()
{
string path = Server.MapPath("member.dat");
using (Stream s = File.Open(path, FileMode.Create))
{
Member mem = new Member();
mem.Id = this.txbId.Text;
mem.Name = this.txbName.Text;
mem.Tel = this.txbTel.Text;
mem.Address = this.txbAddress.Text;
BinaryFormatter b = new BinaryFormatter();
b.Serialize(s, mem);
}
}
//由档桉读取(Binary Serialization)
protected void LoadFromFile()
{
string path = Server.MapPath("member.dat");
if (File.Exists(path))
{
using (Stream s = File.Open(path, FileMode.Open))
{
BinaryFormatter b = new BinaryFormatter();
Member mem = new Member();
mem = (Member)b.Deserialize(s);
this.txbId.Text = mem.Id;
this.txbName.Text = mem.Name;
this.txbTel.Text = mem.Tel;
this.txbAddress.Text = mem.Address;
}
}
}
protected void btnLoad_Click(object sender, EventArgs e)
{
if (this.ddlType.SelectedIndex == 0)
{
LoadFromDB();
}
else
{
LoadFromFile();
}
}
}
[Serializable]
public class Member
{
private string _id = string.Empty;
private string _name = string.Empty;
private string _tel = string.Empty;
private string _address = string.Empty;
public Member()
{
}
public Member(string id, string name,string tel,string address)
{
_id = id;
_name = name;
_tel = tel;
_address = address;
}
public string Id
{
get { return _id; }
set { _id = value; }
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public string Tel
{
get { return _tel; }
set { _tel = value; }
}
public string Address
{
get { return _address; }
set { _address = value; }
}
}
执行结果:
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计
清除 Cookies
-
联系我们
-
水晶石数字论坛
-
Archiver
-
WAP
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计