社区
Oracle 高级技术
帖子详情
关于delphi编程连接Oracle数据库的问题?
yball
2002-12-17 05:54:55
原来用的是sqlserver2000,现在想改用oracle,c/s结构时,ado连接方式编的客户端程序在98下可以直接连到数据库吗?不要安装驱动吧
...全文
59
4
打赏
收藏
关于delphi编程连接Oracle数据库的问题?
原来用的是sqlserver2000,现在想改用oracle,c/s结构时,ado连接方式编的客户端程序在98下可以直接连到数据库吗?不要安装驱动吧
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
eng
2002-12-17
打赏
举报
回复
//配置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;
eng
2002-12-17
打赏
举报
回复
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))
)
*/
eng
2002-12-17
打赏
举报
回复
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;
jiezhi
2002-12-17
打赏
举报
回复
两层的话,需要oracle客户端
三层的,中间层需要oracle客户端
浅谈
Delphi
7.0
连接
Oracle
数据库
的三种方式.pdf
浅谈
Delphi
7.0
连接
Oracle
数据库
的三种方式.pdf
Delphi
免客户端直连
Oracle
数据库
delphi
10.01完整代码,未使用第三方组建。 包含
连接
时必须的
oracle
4个动态库oci.dll、oraocci11.dll、oraociei11.dll、orasql11.dll。
Delphi
编程
-
Oracle
-控件-
delphi
连接
Oracle
数据库
控件
delphi
,CBuilder,Kylix
连接
oracle
控件,用于操作
oracle
数据库
,不需要额外安装
oracle
客户端软件,感谢网络提供者,继续转发分享。 控件安装,请参考ReadMeSrc.txt,里面有详细步骤。
UniDAC5.3.8,
Delphi
连接
Oracle
免安装客户端组件, 直连
数据库
Delphi
连接
Oracle
免安装客户端, 直连
数据库
一段无需安装
Oracle
客户端即可访问
Oracle
数据库
的
delphi
控件
一段无需安装
Oracle
客户端即可访问
Oracle
数据库
的
delphi
控件,可自定义
连接
字符串,使用非常方便。
Oracle 高级技术
3,496
社区成员
18,710
社区内容
发帖
与我相关
我的任务
Oracle 高级技术
Oracle 高级技术相关讨论专区
复制链接
扫一扫
分享
社区描述
Oracle 高级技术相关讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章