快速业务通道

C++ Builder数据库综合开发实践

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
quo;以上建立数据库的连接
dim RS_NEWS
set RS_NEWS = server.createobject("adodb.recordset")
sql = "SELECT * FROM NewsPic"
RS_NEWS.open sql,LK_CONN,1,1
‘以上建立对表的访问
‘下面显示内容,为表达简单,没有格式,引号中为字段名
=RS_NEWS("Extract")
=RS_NEWS("Pic")

这一段代码没有问题,实现了平滑过渡;但是有个别地方,有写入操作,数据不能正常读出。该段代码如下:

dim RS_COUNT
set RS_COUNT = server.createobject("adodb.recordset")
RS_COUNT.open "SELECT * FROM count",LK_CONN,3,3
''访问计数器
dim Zcount
Zcount=RS_COUNT("Count")
Zcount = Zcount + 1
RS_COUNT("Count").Value=Zcount
RS_COUNT.Update
RS_COUNT.Close

开始怀疑这一段后面有写入操作,所以不能正确执行,但经过仔细比较和测试,发现问题不在是否写入上。这一段的代码主要是用了ASP访问Access数据库时直接填入数据库名的方法,而没有使用SQL语句,我们把打开数据库的地方改为“select * from 表名”,程序遂工作正常。

结论:编程时应该尽量使用通用性好的方法,这样对于系统的通用性、可移植性来说,还是很重要的。

四、ODBC的问题

在C++Builder中有的地方要用到SQL查询,因此,有一段程序使用的是ADOQuery控件,本来这种用法在其他机器上用过,没有问题,可是在这里却不行。具体情况如下:放置一个ADOQuery,ConnectionString属性、TableName属性和前面的ADOTable属性设置一样,Active属性保持false,再添加一个DataSource控件和几个DBText控件,设置同前。然后在FormCreate(表单构造函数)中添加如下代码:

ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from Names order by ID");
ADOQuery1->Active=true;
while (!ADOQuery1->Eof)
{
ComboBox1->Items->Add(ADOQuery1->FieldByName("Name")->AsString);
ADOQuery1->Next();
}
//后一段
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from Dutys order by ID");
ADOQuery1->Active=true;
while (!ADOQuery1->Eof)
{
ComboBox2->Items->Add(ADOQuery1->FieldByName("Duty")->AsString);
ADOQuery1->Next();
}

就这么一段代码,在该机器上怎么都不能运行,系统总是提示“BOF或EOF中有一个为真。。。。”的错误,将注释后面的一段删掉,系统可以运行,但退出程序时出现非法错误,说明是带故障运行。反复查看找不出程序的明显错误,把程序拿到其他机器上可以通过,两个机器的最主要差别就是ODBC的版本不同。

于是想将ODBC降为2.5英文版,找到MDAC2.5版安装了几次都不行,只好手工删除了,在WINDOWS目录中搜索出所有前缀为ODBC的文件,然后删除program files\common files中的system目录,再重新安装MDAC(Microsoft Data Access Component 2.5英文版),再运行该程序,一切正常。

结论:不知道是MDAC2.6版本的问题,还是因为它是中文版的问题,总之,造成系统的兼容性不是很好,建议大家在编程时也应该尽量使用已经熟悉的环境,而不要总是去尝试太新的东东。

当然,如果是我这一段代码有问题,还希望有高手能出来指导。

以上是我们在一次数据库系统的移植开发过程中出现问题和解决方法的真实记录,虽然问题都很小,但是让我们在开发过程中走了不少弯路,所以把它记录下来,供大家参考,希望对朋友们的开发有所帮助。其中的问题也希望有朋友能够指出更好的解决办法。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号