2010-03-31 152 views
-2

我想将上传的图像保存到数据库。现在我的问题是:图像保存在数据库中

  1. 什么应该是数据类型的SQL Server 2000的图像? a。图片 b。 varbinary

  2. 什么是在数据库中保存图像的代码?

  3. 如何从数据库检索图像并显示?

请参阅我的任何教程或指导。或者如果你可以请与我分享。

在此先感谢。

+5

是否确定要这么做?这里是一些亲/讨论:http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay – 2010-03-31 11:00:31

+0

是的,我做。感谢分享。 – Termedi 2010-03-31 11:02:53

+3

谨慎解释你的决定? – 2010-03-31 11:37:01

回答

0

我写了this article回到这个问题。它应该帮助你#2和#3。它使用MySQL,但基本相同,只需用MSSQL调用替换MySQL调用即可。

至于#1,我会选择明显的选择:“图像”。
但是,我不是100%确定两者之间的差异。它只是似乎很明显:)

编辑,根据this,看来该image数据类型已经过时了。它将在未来版本中删除。不知道这会对您产生多大影响,因为您正在使用10年前的版本,但值得记住。

+0

不一定是答案,但每当我上传图像到数据库,我base64编码,然后将它存储在clob。 当我想展示它时,我会解码它。 – Flukey 2010-03-31 11:34:17

+1

@Jamie为什么这是无用的编码? – 2010-03-31 11:37:47

+1

@Jamie Yea,为什么base64?所有这些都会增加数据的大小...... – Atli 2010-03-31 11:44:35

4

数据类型应该是文本,因为将图像保存到数据库的最佳方式是保存其路径。让您的操作系统完成存储实际文件的工作。

+0

虽然我同意这通常是最好的方法,但这不是他正在要求。 - 并确切地说,这是**最好的**方法是错误的。它通常是最好的方法,但肯定不会总是如此。 – Atli 2010-03-31 12:58:53

+0

您可能有一点,但我会确定地说,将图像存储到数据库是错误的。 :) – simoncpu 2010-04-27 12:23:06

1

通常在SQL Server上,您将使用BLOB,Binary Large OBject来存储图像。我们在之前的项目中将它用于Word文档,并且它工作得很好。有关更多信息,请参见this article on Database Journal,但对于BLOB类型的快速Google将抛出更多示例。

+0

我不认为SQL Server有一个BLOB类型。或者,您是否可以更多地将它用作所有二进制类型的通用术语? – Atli 2010-03-31 13:30:09

0

在SQLServer中IMAGE或VARBINARY都是一样的。 IMAGE是2GB,但VARBINARY()需要一个长度参数。 将图像存储在数据库中并不是个好主意,大小会增加很多,每个备份需要保存所有图像,而随着大小的增加,还会增加执行备份和还原的时间。您还需要更改网络数据包大小(在服务器属性,高级,网络,网络数据包大小)最近SQLServer版本最准确的数据类型是varbinary(MAX)