首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-02-02 
关于SQL2005 数据类型及对类型操作的几个问题现在做一个项目,要求把图片和附件(一般是 图片--JPG、附件--DO

关于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 


[解决办法]
用image
[解决办法]
一般都是存储路径 然后进行调用,
这样速度快,减小数据库的空间
[解决办法]
2005用varbinary(max)
[解决办法]
支持用IMAGE
[解决办法]
呵呵.很多方法.

热点排行