- 前言
在开发过程中,我们通常需要将图片等二进制数据存储到数据库中,方便管理和备份。本文将介绍使用C#将图片存储到SQL SERVER数据库中的方法,包括以下几个方面:
- 创建数据库表格
- 读取本地图片
- 将图片转换为字节数组
-
将字节数组保存到数据库中
-
创建数据库表格
在SQL SERVER中创建一个名为Images的表格,用于存储图片数据。该表格包含三个字段:
- Id:主键,自动递增
- ImageName:图片名称
- ImageData:图片数据
CREATE TABLE Images
(
Id INT PRIMARY KEY IDENTITY(1,1),
ImageName VARCHAR(50),
ImageData VARBINARY(MAX)
);
- 读取本地图片
使用C#的File类读取指定路径下的本地图片,并将图片转换为字节数组。示例代码如下:
string imagePath = @"C:\Images\test.jpg";
byte[] imageData = File.ReadAllBytes(imagePath);
- 将图片转换为字节数组
读取本地图片后,将图片转换为字节数组。示例代码如下:
ImageConverter converter = new ImageConverter();
byte[] imageData = (byte[])converter.ConvertTo(image, typeof(byte[]));
其中,ImageConverter是C#中用于图片转换的类。在将图片转换为字节数组时,需要指定图片的数据类型为byte[]。
- 将字节数组保存到数据库中
使用C#的ADO.NET操作数据库,将字节数组保存到数据库中。示例代码如下:
using(SqlConnection conn = new SqlConnection(connectionString))
{
string sql = "INSERT INTO Images(ImageName, ImageData) VALUES (@ImageName, @ImageData)";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@ImageName", "test.jpg");
cmd.Parameters.AddWithValue("@ImageData", imageData);
conn.Open();
cmd.ExecuteNonQuery();
}
其中,connectionString为连接字符串,应该根据自己的实际情况进行修改。
- 示例说明
以下示例代码演示了如何将多张本地图片保存到数据库中:
string[] imagePaths = { @"C:\Images\test1.jpg", @"C:\Images\test2.jpg" };
foreach (string imagePath in imagePaths)
{
byte[] imageData = File.ReadAllBytes(imagePath);
using (SqlConnection conn = new SqlConnection(connectionString))
{
string sql = "INSERT INTO Images(ImageName, ImageData) VALUES (@ImageName, @ImageData)";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@ImageName", Path.GetFileName(imagePath));
cmd.Parameters.AddWithValue("@ImageData", imageData);
conn.Open();
cmd.ExecuteNonQuery();
}
}
该示例代码将C:\Images目录下的test1.jpg和test2.jpg两张图片保存到数据库中。通过循环遍历图片路径,在每次循环中读取本地图片并保存到数据库中。
另一个示例代码演示了如何从数据库中读取图片并显示在Windows窗体中:
string sql = "SELECT ImageData FROM Images WHERE ImageName = @ImageName";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@ImageName", "test.jpg");
SqlDataReader dr = cmd.ExecuteReader();
dr.Read();
byte[] imageData = (byte[])dr["ImageData"];
ImageConverter converter = new ImageConverter();
Image image = (Image)converter.ConvertFrom(imageData);
pictureBox1.Image = image;
该示例代码根据图片名称从数据库中读取图片数据,然后使用ImageConverter将字节数组转换为Image格式,并在Windows窗体中显示图片。此处的pictureBox1是Windows窗体中的一个PictureBox控件,用于显示图片。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#将图片存放到SQL SERVER数据库中的方法 - Python技术站