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

发布时间:2016-12-8 22:05:39 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"关于SQL2005 数据类型及对类型操作的几个问题 50sadan003]",主要涉及到关于SQL2005 数据类型及对类型操作的几个问题 50sadan003]方面的内容,对于关于SQL2005 数据类型及对类型操作的几个问题 50sadan003]感兴趣的同学可以参考一下。

      现在做一个项目,要求把图片和附件(一般是 图片--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类型, 不过最好是存储路径

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

谢谢两位的回复,因为看到一些2005的新特性说,text,ntext,image字段将被取代,所以采用varbinary字段,那如果要把这个字段放在数据库副文件中,要怎么做?

一般都是存储路径 然后进行调用比较方便

存储路径 至于你说的副本 友情帮顶

用存储路径吧

引用 5 楼 sadan003 的回复:谢谢两位的回复,因为看到一些2005的新特性说,text,ntext,image字段将被取代,所以采用varbinary字段,那如果要把这个字段放在数据库副文件中,要怎么做? 是的,用varbinary(max)  主要看你用途,各有各的好处 你可以创建新的文件组,然后添加到数据库里,最后在创建表时用 ON { <partition_scheme>|filegroup | "default" } 指定存储表的文件组 当然也可以用分区表

create table ... TEXTIMAGE_ON filegroup 语句指定将表中的 varbinary(max) 类型数据存储在指定的文件组。

一般的数据库存路径,文件放在单独文件夹中。这样的优点是数据库备份管理容易。缺点是容易出现容易出项数据不一致。存数据库的话,数据库数据会很大,数据库管理会很不方便。  

--将图片存到数据库中 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) go insert 表名 values(1,0x)    -- 必须的,且不是null insert 表名 values(2,0x)    -- 必须的,且不是null go 3、读入 sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','I' --注意条件是 编号=1 sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','I' --注意条件是 编号=2 go 4、读出成文件 sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.bmp','where 编号=1','O' --注意条件是 编号=1 sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.doc','where 编号=2','O' --注意条件是 编号=2 go ************如果报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

呵呵.很多方法.

上一篇:如果人人都是美厨女 0fredrickhu]
下一篇:这种查询的SQL 语句该怎么写? 50ykai888]

相关文章

相关评论