我的程序中要将一个对象进行序列化,并将序列化信息保存到Access数据库,现在构想的方法是将序列化信息保存到临时文件,然后在读取文件将信息保存到数据库。
现在想问有没有更直接的方法,直接将信息保存到数据库(要用什么Stream类,怎样用?),另外还要问保存给序列化信息需要什么数据类型才行:备注类型还是OLE对象。贴出xml序列化的实现方法也行!
现在想问有没有更直接的方法,直接将信息保存到数据库(要用什么Stream类,怎样用?),另外还要问保存给序列化信息需要什么数据类型才行:备注类型还是OLE对象。贴出xml序列化的实现方法也行!
解决方案 »
- 我用C#窗体做了模仿炫舞的小游戏,求大侠们解决怎么把键盘值组合成字符串,然后传到label控件上!
- C#服务端建立的UDP连接后,如何获取发给客户端的IP
- 求高手 一替换“正则表达式”(vs2008)
- textbox的 LostFocus 事件
- 如何在RichTextBox替换选定文本,并不改变其它文本的属性?
- 【MS CPT】Microsoft Community Technology Preview 版本的软件可用放心用在项目中吗?
- 在GridView中显示DataTime型的字符串
- 小弟请教一下获取目录下的文件/文件夹的图标要用到什么类(在线等)
- 如何从 ado.net 中获取数据
- Encoding problem
- 请教如何实现象VS.NET中代码自动完成中弹出窗口的功能(在线等)
- 我开发时数据访问层跟逻辑层放在一起,这样会有什么后果?
//序列化
public byte[] SerializeObject(object pObj)
{
if(pObj == null)
return null;
System.IO.MemoryStream _memory = new System.IO.MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(_memory,pObj);
_memory.Position = 0;
byte[] read = new byte[_memory.Length];
_memory.Read(read,0,read.Length);
_memory.Close();
return read;
}
string conn_str = System.Configuration.ConfigurationSettings.AppSettings["conn_str"].ToString();
string sREQUEST_ID = Session["REQUEST_ID"].ToString();
OleDbConnection cn = new OleDbConnection(conn_str);
cn.Open();
OleDbCommand cmd = new OleDbCommand("UPDATE REQUEST_MASTER SET REQUEST_FILE=? WHERE REQUEST_ID=" +int.Parse(sREQUEST_ID),cn);
cmd.Parameters.Add("REQUEST_FILE",OleDbType.Binary);
if(!sFileName1.Equals(""))
{
try
{
FileStream fs = new FileStream(Path +sFileName1, FileMode.OpenOrCreate, FileAccess.Read);
byte[] MyData1= new byte[fs.Length];
fs.Read(MyData1, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
cmd.Parameters["REQUEST_FILE"].Value = MyData1;
}
catch(Exception err)
{
string s = err.Message;
}
}
else
{
cmd.Parameters["REQUEST_FILE"].Value = MyData;
}
try
{ cmd.ExecuteNonQuery();
}
catch(Exception e1)
{
}
finally
{
cn.Close();
}
对于如果string保存到数据中,楼主应该明白
/// <summary>
/// 对象序列化对象类
/// </summary>
public class Serializable
{
private Serializable()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 把对象序列化并返回相应的字节
/// </summary>
/// <param name="pObj">需要序列化的对象</param>
/// <returns>byte[]</returns>
public static byte[] SerializeObject(object pObj)
{
if(pObj == null)
return null;
System.IO.MemoryStream _memory = new System.IO.MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(_memory,pObj);
_memory.Position = 0;
byte[] read = new byte[_memory.Length];
_memory.Read(read,0,read.Length);
_memory.Close();
return read;
}
public static string SerializeObjectToString(object pOjb)
{
Byte[] bytes = SerializeObject(pOjb);
return System.Convert.ToBase64String(bytes);
}
/// <summary>
/// 把字节反序列化成相应的对象
/// </summary>
/// <param name="pBytes">字节流</param>
/// <returns>object</returns>
public static object DeserializeObject(byte[] pBytes)
{
object _newOjb = null;
if(pBytes == null)
return _newOjb;
System.IO.MemoryStream _memory = new System.IO.MemoryStream(pBytes);
_memory.Position = 0;
BinaryFormatter formatter = new BinaryFormatter();
_newOjb = formatter.Deserialize(_memory);
_memory.Close();
return _newOjb;
}
public static object DeserializeObjectByString(string text)
{
Byte[] bytes = System.Convert.FromBase64String(text);
return DeserializeObject(bytes);
}
}
System.Convert.FromBase64String(string s) ---byte[]