从sql加载或转换varbinary到文本框文本?

时间:2012-08-08 07:44:48

标签: c# .net sql-server

我是C#编程的新人 目前我尝试将文本文件保存并加载到sql server。我在youtube上观看并搜索了一些视频和文档。他们将图像文件存储到sql。我尝试将文本文件保存到服务器(二进制数据)。现在我坚持如何加载或转换它:

当我保存它时,我使用了memorystream:

MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(textreview.Text);
byte[] theBytes = Encoding.UTF8.GetBytes(textreview.Text);
ms.Position = 0;
ms.Read(theBytes, 0, theBytes.Length);

//insert value to server
SqlCommand cmdb = new SqlCommand("insert into Assignment(text) values (@text)", con);
cmdb.Parameters.AddWithValue("@textname", textPathLabel.Text);
cmdb.Parameters.AddWithValue("@text", theBytes);

现在我尝试加载它,但我卡在这里!

//load from sql
byte[] picarr = (byte[])dr["text"];
ms = new MemoryStream(picarr);
ms.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader(ms);
string text = reader.ReadToEnd();
textreview.Text = text;

1 个答案:

答案 0 :(得分:4)

这是一个关于如何将文本转换为字节然后再转换回来的示例:

var bytes = Encoding.UTF8.GetBytes("test");

这将为您提供一个如下所示的字节数组:

{ 116, 101, 115, 116 }

现在要再次获取文本,您可以像这样使用Encoding.UTF8.GetString()

Encoding.UTF8.GetString(bytes);

这意味着您可以在保存值时简单地执行此操作:

cmdb.Parameters.AddWithValue("@text", Encoding.UTF8.GetBytes(textreview.Text));

然后在加载时你只需这样做:

textreview.Text = Encoding.GetString((byte[])dr["text"]);