导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2004/5/13 8:12:30
标题:
odbc连接对blob数据类型大小的限制?
浏览:1736
加入我的收藏
楼主:
用扫描仪扫描图片并存入数据库,用odbc连接,可保存时odbc对blob数据类型的大小限制在32K以内,大于32K的图片只存进一部分,请问怎么解决?我找来找去,不知道在那里改动这个限制? 请各们大虾仗义相助。谢谢。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2004/5/13 8:23:56
1楼:
我曾遇到过用BDE的Query存取Blob字段时在从数据库读出时最多只能读32K的情况(写入时正常),后来换用Table就解决了; 不知道你是否用Query来存取,如果是,那改用Table试试吧。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
2004/5/13 9:19:34
2楼:
谢谢iamdream的答复,我用table试了一下,还是不行呀,根本就存不进去,图片文件长度如果超过了32K,post的时候就显示Invalid BLOB Length。 我知道在PB中用ODBC连接读写blob类型的文件时,可以在一个ini文件中改改一个设定,这里怎么解决,还请各位大虾费心。谢谢。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2004/5/13 10:09:26
3楼:
你用的是什么数据库?我用SQL Server,Interbase数据库都是可以的。 此外,最好将相关代码贴出来让大家帮你看看。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
2004/5/13 10:24:16
4楼:
我用的是sql server 2000 用odbc数据源连接,我想代码应该是没有问题的,因为可以保存,而且如果选择的图片小于32K,显示的时候也很正常。当图片大于32K的时候,也可以保存,只是用dbimage显示的时候,发现图片缺了一部分。肯定就是ODBC连接的限制了,BLOB数据的长度不能超过32767。关键是怎么改这个ODBC设置,使程序可以存取超过32767长度的数据。 procedure TForm1.BitBtn2Click(Sender: TObject); var str_sql : string; bmp : Tbitmap; begin bmp := Tbitmap.Create; try bmp.LoadFromFile(opendialog.FileName); with query_scan do begin databasename := database1.DatabaseName; close; sql.Clear; str_sql := 'insert a_img values (:img)'; sql.Add(str_sql); parambyname('img').Assign(bmp); execsql; end; showmessage('OK'); finally bmp.free; end; end; 谢谢老兄费心。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2004/5/13 12:21:17
5楼:
不好意思,我试了一下,SQL Server的确不行,不过Interbase是可以的; 解决方法: 你将BDE的Database控件中的Params下的Blob Size改得大一些即可(以K为单位),或者直接到注册表改HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\MSSQL\DB OPEN\Blob Size键值。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
2004/5/13 12:26:50
6楼:
是BDE有限制,在BDE里设一下Blob Size就行了。
----------------------------------------------
www.acreport.com
作者:
2004/5/13 15:28:30
7楼:
谢谢两位的回复。 我把上面两位说的方法都试过了,还是不行呀,我用的是odbc连接,不是用bde连接的。 注册表也改了,还是不行呀,真是奇怪。 另外,为什么我调用扫描仪把图像存在硬盘上之后,用 imgscan1.StartScan; //开始扫描 image1.Picture.loadfromfile(imgscan1.Image); 显示图片的时候会提示
此帖子包含附件: 大小: 16.6K
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2004/5/13 15:43:10
8楼:
我把BDE里configuration页内的Drivers\ODBC\SQL SERVER内的BLOB SIZE属性改大了些,这回可以存大于32K的图片了。谢谢两位的答复。谢谢。 可是用image显示扫描仪扫描的图片还是会出上面所说的错误。还得请各位大虾帮忙看看。谢谢。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2004/5/13 18:21:13
9楼:
imgscan1.Image是表示位图的全路径文件名吗?
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
2004/5/13 19:08:52
10楼:
是的,我用showmessage(imgscan1.image)显示,这个就是扫进来的位图文件的全路径文件名。 我在设置image1的picture属性时,如果load我扫进来的这个图片,有时可以,有时也会出错。真是奇怪。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2004/5/14 8:15:39
11楼:
那你用“画图”程序是否能正常打开?最好你发一份图片上来。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
2004/5/14 14:51:09
12楼:
谢谢iamdream老兄,我上午把电脑格式化了重新作,所以一直没上网。 可是还是问题依旧。 用画图和acdsee一类的软件能打开,没问题呀,
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
2004/5/14 17:39:58
13楼:
这个问题我遇到过,换用ADO就肯定没问题了.
----------------------------------------------
-
作者:
2004/5/15 8:22:57
14楼:
那你在Explorer中查看它的属性,看看它是“Windows 3.x 位图(BMP)”,如果不是,那转换一下吧。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
2004/5/15 8:29:12
15楼:
to gjunshan : 我也换了ADO试了试,还是会出错呀。 to iamdream : 在Explorer中看?explorer打不开bmp格式的文件呀。 谢谢两位。
----------------------------------------------
那一天我在街头踯躅 你在秋天里独自跳舞 回首落满悲欢的来时路 那覆水难收的赌注 我们用青春一起作证 我们曾遇见到幸福
作者:
bios (阿贡)
★☆☆☆☆
-
盒子中级会员
2004/5/15 9:40:06
16楼:
字段类型 选binary
----------------------------------------------