C# 如何在数据库中读取和写入PNG文件?
我有一些小的用户配置文件图像(5kB),我想存储在数据库中。但我不确定数据类型。varbinary(6000)?og可能是二进制(6000)?可能使用(最大值)C# 如何在数据库中读取和写入PNG文件?,c#,sql-server,C#,Sql Server,我有一些小的用户配置文件图像(5kB),我想存储在数据库中。但我不确定数据类型。varbinary(6000)?og可能是二进制(6000)?可能使用(最大值) 我该如何书写和阅读图像呢?我可以简单地从数组中使用INSERT和bytearray吗?您可以使用blob(二进制大对象)将图像存储在数据库中,请参见: BLOB是一个通用术语,指文本、ntext和图像数据类型,通常包含文档和图片 编辑:如Marc Gravell所述: “文本、ntext和图像数据类型”:它们都已过时多年;“varcha
我该如何书写和阅读图像呢?我可以简单地从数组中使用INSERT和bytearray吗?您可以使用
blob
(二进制大对象)将图像存储在数据库中,请参见:
BLOB是一个通用术语,指文本、ntext和图像数据类型,通常包含文档和图片
编辑:如Marc Gravell所述:
“文本、ntext和图像数据类型”:它们都已过时多年;“varchar(max)、nvarchar(max)和varbinary(max)数据类型”将是非常可取的
例如:
byte[] image = GetImage(photoFilePath);
using (SqlConnection connection = new SqlConnection(connectionString)){
SqlCommand command = new SqlCommand("INSERT INTO Employees (Image) " +
"Values(@Image)", connection);
command.Parameters.Add("@Image", SqlDbType.VarBinary, image.Length).Value = image;
connection.Open();
command.ExecuteNonQuery();
}
以及GetImage()
方法:
public static byte[] GetImage(string filePath)
{
FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(stream);
byte[] image = reader.ReadBytes((int)stream.Length);
reader.Close();
stream.Close();
return image;
}
您可以使用数据类型
image
()
是的,您可以简单地使用insert
添加二进制数据。
以下是示例:
插入二进制文件(二进制文件id、二进制数据、文件名)
值(@binary\u file\u id、@binary\u data、@file\u name)
其中
@binary\u data
是字节数组您最好使用varbinary(max)
。如果您知道大小要小得多,那么有时限制它是有用的——这允许行内数据优化;然而,对于5公里的图像,这将是没有用的;因此,(max)
类型将更加方便
是的,您可以使用常规的
insert
、select
和byte[]
来设置这种大小。有一种“在循环中追加”/“在循环中读取”的方法可以用于处理大型文件(数兆字节或千兆字节),但在这里您不需要它。@Jason94它解决了您的问题吗?您能将答案标记为已解决吗?再次提到“文本、ntext和图像数据类型”:它们都已过时多年;“varchar(max)、nvarchar(max)和varbinary(max)数据类型”将非常复杂preferable@MarcGravell谢谢你的评论!我将编辑我的答案<代码>图像已弃用varbinary(max)
是许多公司的首选years@MarcGravell好啊谢谢