字节数组转DataTable我把varbinary类型字段中DataTable类型的对象保存到SQL2005数据库中。我想取回它,但我无法进入它。我就是这样保存的。内存流memStream=new内存流();StreamWritersw=newStreamWriter(memStream);sw.写(dt);con.Open();使用(SqlCommandcmd=newSqlCommand("INSERTINTOTables(TableName,TableData,QuestionID)VALUES(@TableName,@TableData,@QuestionID)",con)){cmd.Parameters.Add("@TableName",SqlDbType.VarChar).Value="一张新表";cmd.Parameters.Add("@TableData",SqlDbType.VarBinary,Int32.MaxValue).Value=memStream.GetBuffer();cmd.Parameters.Add("@QuestionID",SqlDbType.VarChar).Value="2";cmd.ExecuteNonQuery();}'dt'是DataTable对象实例。你说的是二进制序列化和反序列化。也许这会有所帮助。使用System.IO;使用System.Runtime.Serialization;使用System.Runtime.Serialization.Formatters.Binary;使用系统数据;使用系统文本;namespaceSerial{publicclassSer{publicstaticbyte[]StrToByteArray(stringstr){UTF8Encoding编码=newUTF8Encoding();返回编码.GetBytes(str);}publicstaticstringByteArrayToStr(byte[]barr){UTF8Encoding编码=newUTF8Encoding();returnencoding.GetString(barr,0,barr.Length);}publicstaticvoidMain(String[]args){DataTabledt=newDataTable();数据行博士;dt.Columns.Add(newDataColumn("IntegerValue",typeof(Int32)));.Add(newDataColumn("StringValue",typeof(string)));dt.Columns.Add(newDataColumn("DateTimeValue",typeof(DateTime)));dt.Columns.Add(newDataColumn("BooleanValue",typeof(bool)));for(inti=1;恐怕我不得不让你失望了,至少直到你告诉我们你已经为处理数据表的StreamWriter类创建了一个扩展方法。接受一个数据表实例的写入唯一该方法的重载是采用对象的方法,根据MSDN文档,它只保存对象的“文本表示”。因此,我们期望DataTable的.ToString方法以包含DataTable实例的所有内容的格式输出字符串,但是唉。.ToString方法只返回TableName属性的内容,以及显示表达式(如果存在)。所以你没有保存DataTable实例的全部内容,只是表的名称。您应该看看序列化,它应该能够生成DataTable对象所有内容的二进制或XML表示形式。我假设您的代码只是序列化数据表,您必须反序列化它。我不知道使用的是什么格式化程序,因此您必须查看二进制字段的内容。如果是二进制文件,请使用BinaryFormater(请参阅页面中的示例代码)。如果它不是二进制文件,请尝试SoapFormatter和XmlSerializer。最好使用XmlSerializer或BinaryFormatter将DataTable序列化,然后存储在二进制列中。这样做的链接:http://sadeveloper.net/forums/p/439/1772.aspxhttp://bytes.com/topic/net/answers/428472-serializing-datatable以上是C#学习教程:bytearray转换为DataTable共享的所有内容。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
