C# 如何将二进制流插入varbinary?
我一直在阅读和讨论如何将二进制数组插入C# 如何将二进制流插入varbinary?,c#,sql-server,tsql,serialization,C#,Sql Server,Tsql,Serialization,我一直在阅读和讨论如何将二进制数组插入varbinary,但是如果我没有准备好字节数组怎么办?如果我正在序列化一个对象呢?所以如果我有 var Formatter=new BinaryFormatter(); 序列化(SerializeStream,NewEmployeeTree); 当我想序列化为文件时,我将SerializeStream作为 var SerializeStream=new FileStream(SelectedPath,FileMode.Create,FileAccess.
varbinary
,但是如果我没有准备好字节数组怎么办?如果我正在序列化一个对象呢?所以如果我有
var Formatter=new BinaryFormatter();
序列化(SerializeStream,NewEmployeeTree);
当我想序列化为文件时,我将SerializeStream
作为
var SerializeStream=new FileStream(SelectedPath,FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite);
但这次我想序列化到数据库中。我怎么做呢?你可以用
批量插入
像这样:
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//toturial obj = new toturial();
//obj.ID = 1;
//obj.name = "MrLotfi";
//IFormatter formatter = new BinaryFormatter();
//Stream stream = new FileStream("E:\\example.txt", FileMode.Create, FileAccess.ReadWrite);
//formatter.Serialize(stream,obj);
//stream.Close();
Tutorial obj = new Tutorial();
obj.ID = 1;
obj.Name = ".Net";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(@"E:\ExampleNew.txt", FileMode.Create, FileAccess.Write);
formatter.Serialize(stream, obj);
stream.Close();
SqlConnection conn = new SqlConnection("Your SQL Connection String");
conn.Open();
StringBuilder str = new StringBuilder();
str.AppendLine("DECLARE @tImage AS VARBINARY(MAX)");
str.AppendLine(@"SELECT @tImage = CAST(bulkcolumn AS VARBINARY(MAX)) FROM OPENROWSET( BULK 'E:\ExampleNew.txt', SINGLE_BLOB ) AS x");
str.AppendLine(@"INSERT INTO TblPhotos (ID, Name, Images) SELECT NEWID(), 'E:\ExampleNew.txt',@tImage");
SqlCommand cmd = new SqlCommand(str.ToString(), conn);
cmd.ExecuteNonQuery();
Console.WriteLine("Image Saved Successfully...");
stream = new FileStream(@"E:\ExampleNew.txt", FileMode.Open, FileAccess.Read);
Tutorial objnew = (Tutorial)formatter.Deserialize(stream);
Console.WriteLine(objnew.ID);
Console.WriteLine(objnew.Name);
Console.ReadKey();
}
}
[Serializable]
public class Tutorial
{
public int ID;
public string Name;
}
}
@RobertHarvey但是我如何在我的代码中实现它呢?你的问题是“如果我没有准备好字节数组怎么办?”链接的帖子解释了如何将流转换成字节数组。一旦你这样做了,你将有一个字节数组准备就绪。@RobertHarvey但是我从哪里得到这个流呢?什么样的溪流?