Div*_*wal 6 c# sql-server base64 tobase64string
我在 MS SQL 2012 中使用数据类型“Image”来存储图像。
问题:我在 C# 中的 BASE64 字符串中有一个图像
/9j/4AAQSkZJRgABAQEASABIAAD/4SKhRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAALcbAAAAnEAAtxsAAACcQQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykAMjAxNjowMjowNSAxNDo1MTo0MwAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFUKADAAQAAAABAAACWAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAACFrAAAAAAAAAEgAAAABAAAASAAAAAH/2
Run Code Online (Sandbox Code Playgroud)
我将其转换为 C# 中的 byte[],因为我需要将其保存到数据类型 IMAGE 的列中。像这样:
byte[] imageInByteArray =Convert.FromBase64String("MyImage");
Run Code Online (Sandbox Code Playgroud)
保存成功如下:
数据库中的byte[]数组数据 -
现在我尝试检索图像并使用以下命令将其转换回 BASE64:
var imageA = results.Read<byte[]>().ToArray();
string imageB =Convert.ToBase64String(imageA);
Run Code Online (Sandbox Code Playgroud)
现在我得到这样的结果:
MHhGRkQ4RkZFMTAwNTg0NTc4Njk2NjAwMDA0RDREMDAyQTAwMDAwMDA4MDAwNDg3NjkwMDA0MDAwMDAwMDEwMDAwMDAzRTAxMTIw
Run Code Online (Sandbox Code Playgroud)
结果不是我所期待的,应该是这样的
/9j/4AAQSkZJRgABAQEASABIAAD/4SKhRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAALcbAAAAnEAAtxsAAACcQQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykAMjAxNjowMjowNSAxNDo1MTo0MwAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFUKADAAQAAAABAAACWAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAACFrAAAAAAAAAEgAAAABAAAASAAAAAH/2
Run Code Online (Sandbox Code Playgroud)
我相信您需要有关如何在 SQL Server 中存储图像数据的帮助。
您可以创建如下表。请注意,您可能不想创建数据库,只需一个表就足够了。如果您已经有一个要保存此数据的表,则必须确保列的类型为 varbinary(max)。
CREATE DATABASE MyDatabase;
GO
USE MyDatabase;
GO
CREATE TABLE MyImageDatabaseTable (Id int, BLOBData varbinary(max));
GO
Run Code Online (Sandbox Code Playgroud)
然后您可以将数据读取为:
SqlConnection objConn = new SqlConnection(connectionString);
objConn.Open();
SqlCommand objCmd = new SqlCommand("Select * From MyImageDatabaseTable", objConn);
SqlDataReader dr = objCmd.ExecuteReader();
while(dr.Read())
{
byte[] myImageByteArrayData = (byte[]) dr["BLOBData"];
string myImageBase64StringData = Convert.ToBase64String(myImageByteArrayData );
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。