RecordCount,RecNo及数据库图形字段(Image)几个问题的讨论。---TR@SOE(),ALNG(阿良)及各位高手都来呀!!
在这几个问题上已经有不少帖子讨论过:
综合一下:
对于RecordCount,RecNo问题
问题:
使用MSSQL7,在用Query对数据集进行查询后,想用recordcount得到查询出的纪录个数,可是结果竟是-1!!!在DBGrid中明明显示有两条纪录,我百思不得其解,请问是什么原因?还有什么办法求数据集纪录个数?
RecNo无法返回正确的结果
TR@SOE()兄的说法是:
对于C/S数据库,如果以TABLE为基础的数据集而言,那么我认为RecordCount/RecNo都是不可靠的,除非你确信在任何时候都只有一个用户、一个连接;这里当然还牵涉到C/S数据库对数据库修改的读写状态,例如一个数据库的TransIsolation可以设置为tiReadCommitted/tiDirtyRead/tiRepeatableRead,这也会影响每次刷新TABLE时对别的用户做的修改的处理。具体可以看帮助。在BCB的帮助中,对于这三个取值有详细的描述,并且给出了不同的数据库所支持的最低级别。对于Sybase, MS-SQL,最低的也要求tiReadCommitted,且不支持tiRepeatableRead。所以,Count/No都是不可靠的了。
在当地数据库的情况下,由于这种数据库的锁定是针对数据库的,而不是针对记录的,使用Count/No是可以的,但是本身这个机制带来的问题是显而易见的,不在这里讨论了。
以前我看到BCB还是WINGSUN曾经建议过用ADO,据说在ADO中COUNT/NO都是正确的,不妨试一下。
解决的方法:
select count(*) as totalcount from ..... where (和你原来的那个QUERY一样的条件)
然后在程序中读totalcount即可。。。。。
ALNG(阿良)兄的说法:
用ADO.(我不知道ADO的RecordCount和RecNo是否一定正确)
解决的方法:
RecDM->RecQr->Close();
RecDM->RecQr->SQL->Clear();
RecDM->RecQr->SQL->Add(QueryStr);//QueryStr为一Select语句
RecDM->RecQr->Open();
//-----
RecDM->RecQr->Last();
RecDM->RecQr->First();
//--------------------
I=RecDM->RecQr->RecordCount;
对于数据库(以MSSQL7.0为例)使用Image字段存储图形的问题:
问题:显示数据库中的图形字段出现“无效的数据格式 ”的提示
我的观点:
关于JPEG文件在数据库中的存储问题
个人认为:数据库中只能存储BitMaps格式的文件。如果使用TblobField的LoadFromFile把JPG
图象导入Image字段显示时报错:无效的数据格式 。
为什么但使用剪贴板就不出现任何问题?
实际上使用剪贴板在存储时也把jpeg格式自动转化成BITMAPS格式。不信你可从图片的容量上计算一下。
因此:在MSSQL7.0的IMAGE字段中只能存储BITMAPS格式的图片。