关于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类型,
不过最好是存储路径
[解决办法]
--将图片存到数据库中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
[解决办法]
呵呵.很多方法.