关于delphi编程连接Oracle数据库的问题? 原来用的是sqlserver2000,现在想改用oracle,c/s结构时,ado连接方式编的客户端程序在98下可以直接连到数据库吗?不要安装驱动吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 两层的话,需要oracle客户端三层的,中间层需要oracle客户端 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; function SetupRegistry()STRING szDBprofile,szHHH; STRING szCompany; STRING szTemp; NUMBER nvFileHandle; STRING szMsg;begin //注册BDE,默认路径c:\program files\borland\common files\bdeRegDBSetDefaultRoot(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)) )*/ //配置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; 新人求助, 我想知道数据库表格关系到底有什么具体的作用 求救关于插入失败更新的问题! OEM中作业问题 关于Oracle 里面的sql 语句问题,有谁能帮我一下?? 请问:怎么从系统视图中,查用户表的主从关系? 请问oracle9.2.0.1.0的参数文件在哪个位置? 一定要写函数吗???? 我这样写对吗? 怎样更改Oracle监听器使用的的端口 导入问题急,在线等待 一个编号的排序问题 如何编程实现动态关闭或打开触发器
三层的,中间层需要oracle客户端
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;
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))
)
*/
//配置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;