Evet, çok boyutlu dizinizi değiştirmeden geri alabileceksiniz.
Bunu nasıl yapabilirsiniz? Sql Server'da bir Varbinary (max) alanı kullanmak ve seri hale getirilmiş çok boyutlu bayt dizisine kaydetmek. Dizininizi geri almak için, gizlice, veritabanında sakladığınız şeyleri kaldırmanız gerekir. İşte
bunu nasıl örneğidir:
public void TestSO()
{
using (SqlConnection conexion = new SqlConnection())
{
using (SqlCommand command = new SqlCommand())
{
//This is the original multidimensional byte array
byte[,] byteArray = new byte[2, 2] {{1, 0}, {0,1}};
ConnectionStringSettings conString = ConfigurationManager.ConnectionStrings["ConnectionString"];
conexion.ConnectionString = conString.ConnectionString;
conexion.Open();
command.Connection = conexion;
command.CommandType = CommandType.Text;
command.CommandText = "UPDATE Table SET VarBinaryField = @Content WHERE Id = 73 ";
command.Parameters.Add(new SqlParameter("@Content", SqlDbType.VarBinary, -1));
//Serialize the multidimensional byte array to a byte[]
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, byteArray);
//Set the serialized original array as the parameter value for the query
command.Parameters["@Content"].Value = ms.ToArray();
if (command.ExecuteNonQuery() > 0)
{
//This method returns the VarBinaryField from the database (what we just saved)
byte[] content = GetAttachmentContentsById(73);
//Deserialize Content to a multidimensional array
MemoryStream ms2 = new MemoryStream(content);
byte[,] fetchedByteArray = (byte[,])bf.Deserialize(ms2);
//At this point, fetchedByteArray is exactly the same as the original byte array
}
}
}
}
'IMAGE' itiraz edildi - herhangi bir ikili türü saklamak için' ** 2005 ve daha yeni **, sen ** daima ** 'VARBINARY (MAX) kullanmalıdır SQL Server için - yani tek resmim olsun veya bir çok boyutlu dizi. Ve ** hayır ** verileriniz ** herhangi bir şekilde değiştirilemez - baytlık baytlık, tam olarak ilk etapta koyduğunuz gibi baytlar –
Müthiş teşekkürler ... Gerçekten yardımcı oldu ... Ve bir daha fazla şey neden IMAGE denilmiyor diyelim .. IMAGE kullanarak herhangi bir dezavantajı var ..? SQL Server 2005 – Gihan
PS kullanıyorum: Ben googled ve cevabı aldım. Tekrar teşekkürler. Umarım bunu bir cevap olarak koyarsın, böylece onu işaretleyebilirim. Aralarında daha fazla kullanım dışı veri türü için link olanların listesi: http://social.msdn.microsoft.com/Forums/en/transactsql/thread/15f9e54c-18af-4f9a-8472-58fbd285a736 – Gihan