欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【ASP.NET将物件序列化成Binary储存至DB or File】,下面是详细的分享!
ASP.NET将物件序列化成Binary储存至DB or File
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:DropDownList ID="ddlType" runat="server">
<asp:ListItem Value="0">资料库</asp:ListItem>
<asp:ListItem Value="1">档桉</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnLoad" runat="server" OnClick="btnLoad_Click" Text="读取" />
<asp:Label ID="Label1" runat="server" Text="编号:"></asp:Label>
<asp:TextBox ID="txbId" runat="server"></asp:TextBox>
<asp:Label ID="Label2" runat="server" Text="名称:"></asp:Label>
<asp:TextBox ID="txbName" runat="server"></asp:TextBox>
<asp:Label ID="Label3" runat="server" Text="电话:"></asp:Label>
<asp:TextBox ID="txbTel" runat="server"></asp:TextBox>
<asp:Label ID="Label4" runat="server" Text="地址:"></asp:Label>
<asp:TextBox ID="txbAddress" runat="server"></asp:TextBox>
<asp:Button ID="btnAdd" runat="server" OnClick="btnAdd_Click" 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:DropDownList ID="ddlType" runat="server">
<asp:ListItem Value="0">资料库</asp:ListItem>
<asp:ListItem Value="1">档桉</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnLoad" runat="server" OnClick="btnLoad_Click" Text="读取" /><br />
<asp:Label ID="Label1" runat="server" Text="编号:"></asp:Label>
<asp:TextBox ID="txbId" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label2" runat="server" Text="名称:"></asp:Label>
<asp:TextBox ID="txbName" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label3" runat="server" Text="电话:"></asp:Label>
<asp:TextBox ID="txbTel" runat="server"></asp:TextBox><br />
<asp:Label ID="Label4" runat="server" Text="地址:"></asp:Label>
<asp:TextBox ID="txbAddress" runat="server"></asp:TextBox>
<asp:Button ID="btnAdd" runat="server" OnClick="btnAdd_Click" 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; }
}
}
以上所分享的是关于ASP.NET将物件序列化成Binary储存至DB or File,下面是编辑为你推荐的有价值的用户互动:
相关问题:C#序列化一个类成xml
答:class jiedian { pulic string jiedianx{get;set;} public jiediany jiediany {get;set;} } class jiediany { public string jiedianz{get;set;} } >>详细
相关问题:flash builder 怎么把数据序列化
答:序列化与反序列化 先在webserver端序列化,然后再客户端反序列化,需要注意的是两次序列化方式要一致,从下面选择一种方式来实现吧,一般都是把对象序列化成字符串,然后再把字符串反序列化成相应的对象,当然根据需要你也可以序列化成byte数组 ... >>详细
相关问题:【ASP.net】我要把类序列化为JSON格式,在本地测试...
答:按照你的错误信息给类加上【DataContractAttribute 】给类中成员加上【DataMemberAttribute】,除了。net的指定类型,自定义的类要传输貌似都要声明【Serialize able】之类的序列化标识 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
