我使用ADOConnection连接Oracle9i数据库,使用ADO自带的Oracl驱动和使用Oracl自身带的数据库驱动有什么区别?即ADOConnection.ConnectString:=‘Provider=MSDAORA.1;Password=aaa;User ID=qqq;Data Source=www;Persist Security Info=True’和ADOConnection.ConnectString:=‘Provider=OraOLEDB.Oracle.1;Password=aaa;Persist Security Info=True;User ID=qqq;Data Source=www’,这两种数据库驱动,对开发有没有什么影响啊?

解决方案 »

  1.   

    使用Oracle提供的OLEDB Provider,它再调用Oracle提供的OCI接口,实现数据库的直接高速访问。而MS提供的OLEDB Provider,它下面很是调用Oracle提供的ODBC接口(OBDC接口再调用OCI接口),虽然程序兼容性可能提高了,但是访问效率降低了,某些功能也可能受限不能实现。不管使用哪种OLEDB Provider,都要求安装Oracle的客户端软件。
      

  2.   

    使用MS的驱动从数据库里字段类型是Varchar2的字段得到的客户端字段类型是ftString类型的,而使用Oracl自带的驱动得到的是ftWideString类型的,我现在想使用Oracle自带的驱动而得到ftString类型的字段,该怎么处理呢?
    请楼上楼下的大虾帮帮忙!!!
      

  3.   

    搞不定了,这涉及到Delphi的数据访问组件底层的数据类型转换的问题了。Oracle的Varchar2类型,应该可以表示4000bytes长度吧。把它转换为ftString,因为ftString最多只能有255bytes长度,可能会有数据丢失哦。还是ftWideString类型才是合适的。楼主处理ftWideString类型字符串时,有什么问题吗?
      

  4.   

    我是开发3层的系统,中间件原来取得数据集后,打包到XML里进行传输,客户端接收XML后解包,还原数据集的内容,这样使用在局域网环境里速度还可以,现在要放到Internet环境里,在打包和解包、以及传输的时间都很大,所以我想直接传递客户端数据集的Data属性(即数据集内容),这样我压缩数据集内容,就节省了打包、解包的时间,而且经过压缩后的包很小,也可以实现很快的传输。
    但现在又一个问题,我原来开发的客户端软件里,接收数据集的TClientDataSet里设置好的字段类型都是ftString类型,而改进了中间件的方法后,得到数据集里的字段类型没有ftString,都是ftWideString类型,这样我就不能实现直接赋值,如ClientDataSet.Data1 :=ClientDataSet2.Data,否则程序要报错,会出现“字段类型不匹配”的错误,我现在就是想在不改动我客户端软件的基础上实现这个功能,哪位大虾能帮帮忙啊?很急的~!!!!!!!!