我不是全新的编程,但我仍然认为自己是一个新手。我目前正在创建一个最多包含5个订单项的发票系统,这就是说,我正在创建一个字符串<> item,将其序列化以存储然后反序列化以显示。 到目前为止,我已经管理了序列化和反序列化,并且从反序列化的值我已经设法在正确的字段中显示相关信息。
我的问题是:我如何在String<>中添加项目列表?反对我的SQL表中的二进制或XML字段? 我知道它应该类似于将一个Image对象添加到二进制文件中,但那里有一个问题。通常:
byte[] convertToByte(string sourcePath)
{
//get the byte file size of image
FileInfo fInfo = new FileInfo(sourcePath);
long byteSize = fInfo.Length;
//read the file using file stream
FileStream fStream = new FileStream(sourcePath, FileMode.Open, FileAccess.Read);
//read again as byte using binary reader
BinaryReader binRead = new BinaryReader(fStream);
//convert image to byte (already)
byte[] data = binRead.ReadBytes((int)byteSize);
return data;
}
这种事情是为图像完成的,但是整个“长”的东西不适用于List<>对象
任何帮助都会有所帮助
答案 0 :(得分:0)
如果您只想将数据存储为“可读”文本,则可以使用varchar(MAX)
或nvarchar(MAX)
(取决于您是否需要扩展字符支持)。这直接转换为ADO.NET或EntityFramework中的字符串。
如果你需要的只是字符串中的字节,那么Encoding类就会这样做:
System.Text.Encoding.Default.GetBytes(yourstring);
请参阅:http://msdn.microsoft.com/en-us/library/ds4kkd55%28v=vs.110%29.aspx
答案 1 :(得分:0)
在字符串中保存二进制文件的一种方法是将图像转换为Base64字符串。这可以使用Convert.ToBase64String(Byte [])方法完成:
string convertImageToBase64(string sourcePath)
{
//get the byte file size of image
FileInfo fInfo = new FileInfo(sourcePath);
long byteSize = fInfo.Length;
//read the file using file stream
FileStream fStream = new FileStream(sourcePath, FileMode.Open, FileAccess.Read);
//read again as byte using binary reader
BinaryReader binRead = new BinaryReader(fStream);
//convert image to byte (already)
byte[] data = binRead.ReadBytes((int)byteSize);
return Convert.ToBase64String (data);
}
现在,您可以将Base64字符串保存在数据库的字符串字段中。