原来用的是sqlserver2000,现在想改用oracle,c/s结构时,ado连接方式编的客户端程序在98下可以直接连到数据库吗?不要安装驱动吧

解决方案 »

  1.   

    两层的话,需要oracle客户端
    三层的,中间层需要oracle客户端
      

  2.   

    Dlg_ObjDialogs:
        nResult = ShowObjWizardPages(nResult);
        if (nResult = BACK) goto Dlg_SdComponentTree;
        
    Dlg_IpAddress:
    nResult=AskText("请输入数据库服务器IP地址:","130.54.3.174",szIpAdress);
    if (nResult = BACK) goto Dlg_SdComponentTree;
    Dlg_Port:
    nResult=AskText("请输入数据库服务器端口号:","1521",szPort);
    if (nResult = BACK) goto Dlg_IpAddress;
    Dlg_Sid:
    nResult =AskText("请输入数据库SID:","ORCL",szSid); 
    if (nResult = BACK) goto Dlg_Port;
      

  3.   


    function SetupRegistry()
    STRING szDBprofile,szHHH;  
    STRING szCompany;    
    STRING szTemp;        
    NUMBER nvFileHandle;  
    STRING szMsg;
    begin     
    //注册BDE,默认路径c:\program files\borland\common files\bde
    RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);szHHH="SOFTWARE\\BORLAND";          
    RegDBSetKeyValueEx(szHHH+"\\BLW32","BLAPIPATH",REGDB_STRING,"C:\\Program Files\\Borland\\Common Files\\BDE\\",-1);
    RegDBSetKeyValueEx(szHHH+"\\BLW32","LOCALE_LIB0",REGDB_STRING,"C:\\Program Files\\Borland\\Common Files\\BDE\\Fareast.bll",-1);
    RegDBSetKeyValueEx(szHHH+"\\BLW32","LOCALE_LIB1",REGDB_STRING,"C:\\Program Files\\Borland\\Common Files\\BDE\\Usa.bll",-1);RegDBSetKeyValueEx(szHHH+"\\Database Engine","CONFIGFILE01",REGDB_STRING,"C:\\Program Files\\Borland\\Common Files\\BDE\\IDAPI32.CFG",-1);
    RegDBSetKeyValueEx(szHHH+"\\Database Engine","DLLPath",REGDB_STRING,"C:\\Program Files\\Borland\\Common Files\\BDE\\",-1);
    RegDBSetKeyValueEx(szHHH+"\\Database Engine","RESOURCE",REGDB_STRING,"0009",-1);//若数据库引擎没有oracle驱动,配置注册表 szHHH=szHHH+"\\Database Engine\\Settings\\DRIVERS\\ORACLE";
    if ( RegDBKeyExist(szHHH) < 0 ) then   
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","BATCH COUNT",REGDB_STRING,"200",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","BLOB SIZE",REGDB_STRING,"32",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","BLOBS TO CACHE",REGDB_STRING,"64",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","ENABLE BCD",REGDB_STRING,"FALSE",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","ENABLE INTEGERS",REGDB_STRING,"FALSE",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","ENABLE SCHEMA CACHE",REGDB_STRING,"FALSE",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","LANGDRIVER",REGDB_STRING,"",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","LIST SYNONYMS",REGDB_STRING,"NONE",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","NET PROTOCOL",REGDB_STRING,"TNS",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","OBJECT MODE",REGDB_STRING,"TRUE",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","OPEN MODE",REGDB_STRING,"READ/WRITE",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","ROWSET SIZE",REGDB_STRING,"20",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","SCHEMA CACHE DIR",REGDB_STRING,"",-1);

    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","SCHEMA CACHE SIZE",REGDB_STRING,"8",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","SCHEMA CACHE TIME",REGDB_STRING,"-1",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","SERVER NAME",REGDB_STRING,"ORA_SERVER",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","SQLPASSTHRU MODE",REGDB_STRING,"SHARED AUTOCOMMIT",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","SQLQRYMODE",REGDB_STRING,"",-1);
    RegDBSetKeyValueEx(szHHH+"\\DB OPEN","USER NAME",REGDB_STRING,"MYNAME",-1);

    RegDBSetKeyValueEx(szHHH+"\\INIT","VERSION",REGDB_STRING,"4.0",-1);
    RegDBSetKeyValueEx(szHHH+"\\INIT","TYPE",REGDB_STRING,"SERVER",-1);
    RegDBSetKeyValueEx(szHHH+"\\INIT","DLL32",REGDB_STRING,"SQLORA8.DLL",-1);
    RegDBSetKeyValueEx(szHHH+"\\INIT","VENDOR INIT",REGDB_STRING,"OCI.DLL",-1);
    RegDBSetKeyValueEx(szHHH+"\\INIT","DRIVER FLAGS",REGDB_STRING,"",-1);
    RegDBSetKeyValueEx(szHHH+"\\INIT","TRACE MODE",REGDB_STRING,"0",-1);
    endif; //注册oracle数据库客户端    
    szHHH="SOFTWARE\\ORACLE";                
    szCompany="深圳XXXXXX有限公司"; RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
    RegDBSetKeyValueEx(szHHH,"NET80",REGDB_STRING,sPath+"\\orant\\NET80",-1);
    RegDBSetKeyValueEx(szHHH,"NLS_LANG",REGDB_STRING,"SIMPLIFIED CHINESE_CHINA.ZHS16GBK",-1);
    RegDBSetKeyValueEx(szHHH,"NLSRTL33",REGDB_STRING,sPath+"\\orant\\NLSRTL33",-1);
    RegDBSetKeyValueEx(szHHH,"ORA_NLS33",REGDB_STRING,sPath+"\\orant\\NLSRTL33\\DATA",-1);
    RegDBSetKeyValueEx(szHHH,"ORACLE_HOME",REGDB_STRING,sPath+"\\orant",-1);
    RegDBSetKeyValueEx(szHHH,"ORACLE_HOME_NAME",REGDB_STRING,"DEFAULT_HOME",-1);
    RegDBSetKeyValueEx(szHHH,"COMPANY_NAME",REGDB_STRING,szCompany,-1);RegDBSetKeyValueEx(szHHH,"P08",REGDB_STRING,"YES",-1);
    RegDBSetKeyValueEx(szHHH,"DBA_AUTHORIZATION",REGDB_STRING,"ORACLE",-1);
    RegDBSetKeyValueEx(szHHH,"SHARED_ORACLE_HOME",REGDB_STRING,sPath+"\\orant",-1);
                           
    //设置路径     RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
    if ( RegDBKeyExist(szDBExe) < 0 ) then   
    RegDBCreateKeyEx(szDB,"");
    RegDBCreateKeyEx(szDBExe,"");   
    MessageBox("开始创建"+szDBExe,INFORMATION);   
    MessageBox(sPath,INFORMATION);
    szTemp=sPath+"\\orant\\bin;"+sPath+"\\orant\\net80;"+sPath+"\\orant\\nlsrt133;";
    RegDBSetKeyValueEx(szDBExe,"PATH",REGDB_STRING,szTemp,-1);
    endif;             //编辑autoexec.bat文件
    OpenFileMode(FILE_MODE_APPEND);  //追加模式
    if (OpenFile (nvFileHandle, "c:\\", "AUTOEXEC.BAT") < 0) then
    //打开文件失败
     if (CreateFile (nvFileHandle, "c:\\", "AUTOEXEC.BAT") < 0) then
          //创建失败 
          MessageBox ("AUTOEXEC.BAT 文件文件创建失败!", SEVERE);
          abort;
     else
            szMsg = sPath+"\\orant\\bin;"+sPath+"\\orant\\net80;"+sPath+"\\orant\\nlsrt133;";
            // 追加oracle动态连接库的路径
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             // 写文本出错
             MessageBox ("WriteLine failed.", SEVERE);
           endif;                                        
         endif;
     else  
            szMsg = szTemp ;
            // 追加oracle动态连接库的路径
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             // 写文本出错
             MessageBox ("WriteLine failed.", SEVERE);
           endif;                                        
     endif;       
     CloseFile(nvFileHandle);
          
     /*
     AMIS.WORLD =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 130.54.3.174)(PORT = 1521))
        (CONNECT_DATA = (SID = ORCL))
      )
    */
      

  4.   


    //配置orant\net80\admin\tnsnames.ora文件
    OpenFileMode(FILE_MODE_APPEND);  //追加模式
    if (OpenFile (nvFileHandle, sPath+"\\orant\\net80\\admin", "TNSNAMES.ORA") < 0) then
    //打开文件失败
     if (CreateFile (nvFileHandle, sPath+"\\orant\\net80\\admin", "TNSNAMES.ORA") < 0) then
          //创建失败 
          MessageBox ("TNSNAMES.ORA文件文件创建失败!", SEVERE);
          abort;
     else
      // 追加oracle数据库服务配置
            szMsg = "AMIS.WORLD =" ;
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             MessageBox ("WriteLine failed.", SEVERE); 
             abort;
           endif;
           szMsg = "  (DESCRIPTION =" ;
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             MessageBox ("WriteLine failed.", SEVERE); 
             abort;
           endif;    
           szMsg = "    (ADDRESS = (PROTOCOL = TCP)(HOST = "+szIpAdress+")(PORT = "+szPort+"))" ; 
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             MessageBox ("WriteLine failed.", SEVERE); 
             abort;
           endif;    
           szMsg = "    (CONNECT_DATA = (SID = "+szSid+"))" ;
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             MessageBox ("WriteLine failed.", SEVERE); 
             abort;
           endif;
           szMsg = "  )" ;
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             MessageBox ("WriteLine failed.", SEVERE); 
             abort;
           endif;                
                                               
         endif;
     else  
            // 追加oracle数据库服务配置
            szMsg = "AMIS.WORLD =" ;
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             MessageBox ("WriteLine failed.", SEVERE); 
             abort;
           endif;
           szMsg = "  (DESCRIPTION =" ;
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             MessageBox ("WriteLine failed.", SEVERE); 
             abort;
           endif;    
           szMsg = "    (ADDRESS = (PROTOCOL = TCP)(HOST = "+szIpAdress+")(PORT = "+szPort+"))" ; 
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             MessageBox ("WriteLine failed.", SEVERE); 
             abort;
           endif;    
           szMsg = "    (CONNECT_DATA = (SID = "+szSid+"))" ;
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             MessageBox ("WriteLine failed.", SEVERE); 
             abort;
           endif;                
           szMsg = "  )" ;
            if (WriteLine(nvFileHandle, szMsg) < 0) then
             MessageBox ("WriteLine failed.", SEVERE); 
             abort;
           endif;                
     endif;       
     CloseFile(nvFileHandle);return 0;
    end;