我有一个像(id,name,image)这样的表,我想知道如何在数据库中存储和更新图像。我使用 OpenFileDialog 读取图像,希望对朋友有所帮助。
问问题
4522 次
4 回答
0
向/从 sql 存储/检索图像的推荐方法之一是使用 Base64 格式。
您可以将图像转换为 base64 字符串,将其保存到 sql。从 sql 中取回 base64 字符串,并将其转换回图像。
这是有关如何执行两种转换的链接。
于 2013-07-23T10:27:46.890 回答
0
尝试这个
CREATE TABLE [dbo].[Employee](
[emp_id] [int] NOT NULL,
[emp_name] [varchar](50) NOT NULL,
[emp_image] [image] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
string fileName = @"D:\MyImage.jpg";
string connectionString = "Password=PWD;Persist Security " +
"Info=True;User ID=USER;Initial Catalog=DATABASE;Data Source=SQLSERVER";
using (SqlConnection sqlConnection = new SqlConnection(connectionString))
{
FileInfo finfo = new FileInfo(fileName);
byte[] btImage = new byte[finfo.Length];
FileStream fStream = finfo.OpenRead();
fStream.Read(btImage, 0, btImage.Length);
fStream.Close();
using (SqlCommand sqlCommand = new SqlCommand(
"INSERT INTO Employee (emp_id, emp_name, " +
"emp_image) VALUES(@emp_id, @emp_name, @emp_image)",
sqlConnection))
{
sqlCommand.Parameters.AddWithValue("@emp_id", 2);
sqlCommand.Parameters.AddWithValue("@emp_name", "Employee Name");
SqlParameter imageParameter =
new SqlParameter("@emp_image", SqlDbType.Image);
imageParameter.Value = btImage;
sqlCommand.Parameters.Add(imageParameter);
sqlConnection.Open();
sqlCommand.ExecuteNonQuery();
sqlConnection.Close();
}
}
于 2013-07-23T09:53:17.410 回答
0
您可以使表数据类型中的字段为 varbinary(MAX) 然后您可以使用 c# 将图像保存在 ms sql 中
using (MemoryStream ms = new MemoryStream())
{
picturePictureEdit.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
c.Picture = ms.ToArray();
}
如果您从表中获取图像,则可以编写此代码
if (c.Picture != null)
{
byte[] newbit = c.Picture.ToArray();
MemoryStream mem = new MemoryStream(newbit);
picturePictureEdit.Image = new Bitmap(mem);
}
else
{
picturePictureEdit.Image = null;
}
于 2015-06-12T21:12:36.970 回答
-1
您需要将图像序列化为可以存储在 SQL BLOB 列中的二进制格式 看看这个
于 2013-07-23T09:50:11.153 回答