从图片存入SQLServer:一步一步实现!

介绍

在开发一个Web应用程序时,有时我们需要将图像存储在数据库中,而不是在文件系统中。本文将介绍如何在SQL Server数据中将图像存储为二进制数据。我们还将了解如何使用C#编写代码来将图像从文件系统保存到数据库中,并将其从数据库检索出来。

前提条件

在继续之前,您需要执行以下操作:

1.安装SQL Server Management Studio

您可以从SQL Server Management Studio下载页面下载SQL Server Management Studio。点击 此处 下载。

2.创建数据库

在SQL Server Management Studio中创建一个名为“ImageTest”的新数据库。

步骤一:创建表

要存储图像,我们将使用一个名为“Images”的表,该表将具有两个列:一个是ID(唯一标识符),一个是Image(包含二进制图像数据)。要创建此表,请打开SQL Server Management Studio,然后右键单击新数据库并选择“新查询”。

USE ImageTest;

CREATE TABLE Images

(

ID INT IDENTITY(1,1) PRIMARY KEY,

Image VARBINARY(MAX) NOT NULL

);

我们现在已经创建了我们的表,它将用于存储图像数据。

步骤二:将图像添加到表中

如果要将图像添加到表中,则需要将其存储为二进制数据,并使用INSERT语句将其添加到表中。可以使用以下代码将位于C:\Imagesfolder中的任何图像添加到名为“Images”的表中:

USE ImageTest;

INSERT INTO Images(Image)

SELECT BulkColumn FROM Openrowset( Bulk 'C:\Images\SampleImage.jpg', Single_Blob) as img

使用INSERT语句添加其他图像时,只需将上述代码中的文件路径更改为所需的文件路径即可。

步骤三:检索图像

要从名为“Images”的表中检索图像数据,我们需要使用SELECT语句。以下代码演示了如何检索ID为1的图像:

USE ImageTest;

SELECT Image FROM Images WHERE ID = 1

如果要在自己的应用程序中检索图像,请使用适当的语言(例如C#)编写代码,并使用SQL Server上的适当连接字符串。

使用C#将图像存储在数据库中

要使用C#编写代码将图像存储在SQL Server数据库中,请遵循以下步骤:

1. 创建SQL Server连接

在C#代码中,我们需要首先创建与SQL Server的连接。以下是一个例子:

using System.Data.SqlClient;

public class ImageUploader {

SqlConnection conn = new SqlConnection("server=localhost;user id=myUsername;password=myPassword;initial catalog=ImageTest");

}

2.将图像从文件系统读取,并将其存储为二进制数据

下一个步骤是从文件系统读取图像,并将其存储为二进制数据。以下是一个例子:

public byte[] GetImageData(string imagePath) {

byte[] imageData = null;

FileInfo fileInfo = new FileInfo(imagePath);

long imageFileLength = fileInfo.Length;

FileStream fs = new FileStream(imagePath, FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(fs);

imageData = br.ReadBytes((int)imageFileLength);

return imageData;

}

此方法返回一个字节数组,其中包含图像数据。

3.将图像添加到数据库表中

最后一步是将二进制图像数据插入到SQL Server表中。以下是一个例子:

public void InsertImageData(byte[] imageData) {

string insertSql = "INSERT INTO Images (Image) VALUES (@ImageData)";

SqlCommand cmd = new SqlCommand(insertSql, conn);

SqlParameter imageDataParam = new SqlParameter("@ImageData", SqlDbType.VarBinary, imageData.Length);

imageDataParam.Value = imageData;

cmd.Parameters.Add(imageDataParam);

cmd.ExecuteNonQuery();

}

完成上述步骤后,您现在可以使用上述3个方法来从C#代码中将图像存储到SQL Server数据库中了。

使用C#检索图像

要使用C#编写代码检索SQL Server数据库中的图像,请遵循以下步骤:

1.创建SQL Server连接

与存储图像时的代码相同,首先需要在C#代码中创建与SQL Server的连接。以下是一个例子:

using System.Data.SqlClient;

public class ImageDownloader {

SqlConnection conn = new SqlConnection("server=localhost;user id=myUsername;password=myPassword;initial catalog=ImageTest");

}

2.从数据库中检索图像数据

要检索图像数据,使用SELECT语句从SQL Server表中检索二进制图像数据。以下是一个例子:

public byte[] GetImageDataFromDatabase(int imageId) {

byte[] imageData = null;

string selectSql = "SELECT Image FROM Images WHERE ID = @ImageId";

SqlCommand cmd = new SqlCommand(selectSql, conn);

SqlParameter imageIdParam = new SqlParameter("@ImageId", SqlDbType.Int);

imageIdParam.Value = imageId;

cmd.Parameters.Add(imageIdParam);

SqlDataReader reader = cmd.ExecuteReader();

if (reader.Read()) {

imageData = (byte[])reader["Image"];

}

return imageData;

}

此方法将返回包含二进制图像数据的字节数组。

3.将字节数组转换为图像

最后一步是使用MemoryStream将字节数组转换为图像。以下是一个例子:

public Image GetImage(byte[] imageData) {

MemoryStream ms = new MemoryStream(imageData);

Image img = Image.FromStream(ms);

return img;

}

该方法将返回一个Image对象,其中包含检索的图像数据。

结束语

我们已经讨论了如何将图像存储在SQL Server数据库中,并使用C#从数据库中检索它们。这是一些开发Web应用程序的重要部分,该Web应用程序需要存储和检索图像,而不是将它们保存在文件系统中。希望这篇文章对你有所帮助。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签