ASP.NET 的中图片的加载可以用户像操作数据库那样进行,可以使用ADO.NET 提供的数据提供者类库对图片进行增删操作。以下是一个基本的操作示例:
1.将图片保存到数据库:
要把图片保存到数据库,我们需要把图片转化为二进制。然后我们可以使用参数化查询,这是因为二进制数据不能直接转化为字符串。
byte[] imageData;
using (var stream = new FileStream("test.jpg", FileMode.Open))
{
var binaryReader = new BinaryReader(stream);
imageData = binaryReader.ReadBytes((int)stream.Length);
}
string connStr = "Your connection string";
using (var conn = new SqlConnection(connStr))
{
var query = "INSERT INTO Images (ImageData) VALUES (@ImageData)";
var cmd = new SqlCommand(query, conn);
cmd.Parameters.Add(new SqlParameter("@ImageData", imageData));
conn.Open();
cmd.ExecuteNonQuery();
}
2.从数据库加载图片:
从数据库加载图片,我们需要从数据库中取出二进制数据,然后把二进制数据转化为图片。
string connStr = "Your connection string";
byte[] imageData;
using (var conn = new SqlConnection(connStr))
{
var query = "SELECT ImageData FROM Images WHERE Id=@Id";
var cmd = new SqlCommand(query, conn);
cmd.Parameters.Add(new SqlParameter("@Id", Id));
conn.Open();
using (var reader = cmd.ExecuteReader())
{
if (reader.Read())
{
imageData = (byte[])reader["ImageData"];
}
}
}
MemoryStream ms = new MemoryStream(imageData);
Image returnImage = Image.FromStream(ms);
3.从数据库删除图片:
删除图片相对比较简单,你只需要执行一个删除语句就可以了。
string connStr = "Your connection string";
using (var conn = new SqlConnection(connStr))
{
var query = "DELETE FROM Images WHERE Id=@Id";
var cmd = new SqlCommand(query, conn);
cmd.Parameters.Add(new SqlParameter("@Id", Id));
conn.Open();
cmd.ExecuteNonQuery();
}
在实际开发中,我们不会直接把图片保存到数据库,因为这样会增加数据库的负担。通常我们会把图片上传到特定的文件服务器,然后在数据库中保存图片的URL或者路径。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/170323.html