当前位置: 代码迷 >> Sql Server >> 关于SQL2005 数据类型及对类型操作的几个小问题
  详细解决方案

关于SQL2005 数据类型及对类型操作的几个小问题

热度:20   发布时间:2016-04-27 17:15:33.0
关于SQL2005 数据类型及对类型操作的几个问题
现在做一个项目,要求把图片和附件(一般是 图片--JPG、附件--DOC格式)存入数据库中,可不可以全部用varbinary类型的字段来存储?比较图片和附件存在站点目录中和存在数据库中,哪个方式的效率高?
  若使用varbinary字段,我想把这个字段的数据存在数据库的副文件中,应该怎么做?用SQL语句可以实现吗?怎么实现?
  请各路高手帮忙解答下,谢谢。

------解决方案--------------------
image
------解决方案--------------------
ntext、text 和 image
用于存储大型非 Unicode 字符、Unicode 字符及二进制数据的固定长度和可变长度数据类型。Unicode 数据使用 UNICODE UCS-2 字符集。

ntext

可变长度 Unicode 数据的最大长度为 230 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。ntext 在 SQL-92 中的同义词是 national text。

text

服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。

image

可变长度二进制数据介于 0 与 231-1 (2,147,483,647) 字节之间。 

注释
下面的函数和语句可以与 ntext、text 或 image 数据一起使用。


------解决方案--------------------
用IMAGE类型,
不过最好是存储路径
------解决方案--------------------
探讨
      现在做一个项目,要求把图片和附件(一般是 图片--JPG、附件--DOC格式)存入数据库中,可不可以全部用varbinary类型的字段来存储?比较图片和附件存在站点目录中和存在数据库中,哪个方式的效率高?
      若使用varbinary字段,我想把这个字段的数据存在数据库的副文件中,应该怎么做?用SQL语句可以实现吗?怎么实现?
      请各路高手帮忙解答下,谢谢。

------解决方案--------------------
一般都是存储路径 然后进行调用比较方便
------解决方案--------------------
存储路径
至于你说的副本
友情帮顶
------解决方案--------------------
用存储路径吧
------解决方案--------------------
探讨
谢谢两位的回复,因为看到一些2005的新特性说,text,ntext,image字段将被取代,所以采用varbinary字段,那如果要把这个字段放在数据库副文件中,要怎么做?

------解决方案--------------------

create table ... TEXTIMAGE_ON filegroup 语句指定将表中的 varbinary(max) 类型数据存储在指定的文件组。
------解决方案--------------------
一般的数据库存路径,文件放在单独文件夹中。这样的优点是数据库备份管理容易。缺点是容易出现容易出项数据不一致。存数据库的话,数据库数据会很大,数据库管理会很不方便。
 
------解决方案--------------------
SQL code
--将图片存到数据库中CREATE PROCEDURE sp_textcopy (   @srvname    varchar (30),   @login      varchar (30),   @password    varchar (30),   @dbname      varchar (30),   @tbname      varchar (30),   @colname    varchar (30),   @filename    varchar (30),   @whereclause varchar (40),   @direction  char(1)) AS DECLARE @exec_str varchar (255) SELECT @exec_str =         'textcopy /S ' + @srvname +         ' /U ' + @login +         ' /P ' + @password +         ' /D ' + @dbname +         ' /T ' + @tbname +         ' /C ' + @colname +         ' /W "' + @whereclause +         '" /F ' + @filename +         ' /' + @direction EXEC master..xp_cmdshell @exec_str  2、建表和初始化数据create table 表名 (编号 int,image列名 image)goinsert 表名 values(1,0x)    -- 必须的,且不是nullinsert 表名 values(2,0x)    -- 必须的,且不是nullgo3、读入sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','I' --注意条件是 编号=1sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','I' --注意条件是 编号=2go4、读出成文件sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','O' --注意条件是 编号=1sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','O' --注意条件是 编号=2go************如果报textcopy不是可执行文件的话,你就到C:\Program Files\Microsoft SQL Server\MSSQL\Binn目录下拷备 textcopy.exe到:C:\Program Files\Microsoft SQL Server\80\Tools\Binn
  相关解决方案