• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

Insert语句长度是不是有限制的啊

wt_sanlian 2003-10-30 12:58:41
我用Insert语句插入一行,带有一个Blob字段:

Insert into mytable ( Name,Photo) values ( 'mary' ,0xFFD8FFDB....)
当照片文件长度大于30多KB时,转换成BCD码有多KB,Query Analyzer 就报错,说什么SQL语句超过64K限制。

各们朋友,怎么才能解决这个问题呢?

...全文
216 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wt_sanlian 2003-10-30
转换成BCD码有60多KB
回复
wt_sanlian 2003-10-30
我用的是C++ Builder
回复
cllxyuer 2003-10-30
用什么语言?我用delphi,1M都没有问题的。当然,我不用Insert语句,我直接用什么TBoldField什么的字段处理。用流的方式。
回复
pengdali 2003-10-30
你是什么语言?
回复
yun198183 2003-10-30
哦,了解
回复
wt_sanlian 2003-10-30
Blob字段是Image类型的,

客户端运行在另外一台机器上,负责采集照片, 照片是Jpg格式,
照片长度小于30k时,转换成BCD码,形成Insert的语句其长度小于60k, 可以成功的插入到数据库中,也可以正常读出;但照片长度超过30多k以后,也可以插入,但照片再读出来时,其格式被破坏了.
回复
伍子V5 2003-10-30
MSSQL
一列长度是有8K限制的
所以只有利用楼上的办法
回复
lynx1111 2003-10-30
Blob字段?image?

1、建立过程
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)
insert 表名 values(2,0x)
go

3、读入
sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.avi','where 编号=1','I' --注意条件是 编号=1

sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.wav','where 编号=2','I' --注意条件是 编号=2

go

4、读出成文件
sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\图片.avi','where 编号=1','O' --注意条件是 编号=1

sp_textcopy '你的服务器名','sa','你的密码','库名','表名','image列名','c:\bb.wav','where 编号=2','O' --注意条件是 编号=2
go

把image列清空:update 表 set 列=null
回复
伍子V5 2003-10-30
用image类型

方法:
1、建立过程
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)
insert 表名 values(2,0x)
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
回复
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-10-30 12:58
社区公告
暂无公告