delphi与oracle的连接
Provider=MSDAORA.1;Password=manager;User ID=system;pDATA SERVER=192.1.1.3;Data
Source=FWQPORA1;Extended Properties=;Persist Security Info=False
这是我的连接成功的实例
SERVER NAME=test//服务名
USER NAME=scott//⽤户名
NET PROTOCOL=LISTENER1//监听程序
OPEN MODE=READ/WRITE
SCHEMA CACHE SIZE=8
LANGDRIVER=
SQLQRYMODE=
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SCHEMA CACHE TIME=-1
MAX ROWS=-1
BATCH COUNT=200
ENABLE SCHEMA CACHE=FALSE
SCHEMA CACHE DIR=
ENABLE BCD=FALSE
ENABLE INTEGERS=FALSE
LIST SYNONYMS=NONE
ROWSET SIZE=20
BLOBS TO CACHE=64
BLOB SIZE=32
OBJECT MODE=TRUE
PASSWORD=tiger//密码
Provider=OraOLEDB.Oracle.1;Persist Security Info=True;
Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST
= <;服务器名称或IP>)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME
= <;全局数据库名称>)));User ID=<⽤户名>;Password=<;密码>
Provider=OraOLEDB.Oracle.1;Persist Security Info=True;Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST=192.1.1.3)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = FWQPORA1)));User
ID=system;Password=manager
Provider=MSDAORA.1;Persist Security Info=True;Data Source=(DESCRIPTION =(ADDRESS_LIST =(
ADDRESS = (PROTOCOL = TCP)(HOST=192.1.1.3)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = FWQPORA1)));User
ID=system;Password=manager
=============
不安装客户端,使⽤ADO访问Oracle 8.1.6数据库解决⽅案。
最近因为⼯作需要,花了些时间研究了⼀下不安装客户端,如何使⽤ADO访问Oracle 8.1.6数据库,整理了⼀下,只需要43个⽂件(8.46 MB),添加若⼲注册表内容,注册⼀个⽂件,就可以了做到了,现在把这些完整贴出来,希望有⼈能够⽤的到。
另外:Oracle 8.1.6驱动也可以⽤于连接Oracle 9i的数据库,但我没有⽤下⾯的“五、程序中ADO连接字符串写法”测试过,现在没有9i的环境,还望有条件的朋友帮忙测试⼀下。
Oracle 8.1.6 OLEDB 驱动
⽬录、⽂件结构:
主⽬录(34⽂件)
oci.dll
OCIW32.DLL
oracle.key
oraclient8.dll
oracommon8.dll
ORACORE8.DLL
orageneric8.dll
oraldapclnt8.dll
oran8.dll
ORANCDS8.DLL
orancrypt8.dll
oranhost8.dll
oranl8.dll
oranldap8.dll
ORANLS8.DLL
orannds8.dll
orannms8.dll
orannzsbb8.dll
oranoname8.dll
oranro8.dll
orantns8.dll
OraOLEDB.dll
oraoledbgmr.dll
plsql12配置数据库连接
OraOLEDBPUS.dll
OraOLEDBrmc.dll
OraOLEDBrst.dll
OraOLEDButl.dll
OraOLEDBzhs.dll
ORAPLS8.DLL
ORASLAX8.dll
ORASQL8.DLL
ORATRACE8.DLL
oravsn8.dll
orawtc8.dll
|
|--bin(1⽂件)
orantcp8.dll
|--ocommon
|--nls
|--ADMIN
|--DATA(8⽂件)
LX00001.NLB
LX00023.NLB
LX10001.NLB
LX10035.NLB
LX1BOOT.NLB
LX20001.NLB
LX20354.NLB
LX60354.NLB
以上为所有所需⽂件,其中OraOLEDBzhs.dll好像不要也⽆所谓,反正也不⼤,看⽂件名也是ADO需要的,就带上了;OraOLEDBrmc.dll好像也可以不要,但是我的程序dll中链接Oralce少了这个⽂件就会跳出个⾮法操作,可继续也没问题(模模糊糊的说了两个“好像”,其实我也记不清是不是这两个⽂件了,⼏天前反复了n次试出来的,当时没记录,嘿嘿……)。
配置、操作过程:
⼀、将以上⽂件及⽬录结构拷贝到⼀个⽬录
⼆、注册OraOLEDB.dll⽂件:REGSVR32.EXE OraOLEDB.dll。
三、路径:
Win9x需要修改Autoexec.bat⽂件的环境变量path,只需在批处理⽂件中增加⼀⾏:path=<;安装路径>;%path%,重启系统后⽣效。
Win2000、WinXP需要在“我的电脑”->“属性”->修改环境变量中的path变量,⼿⼯修改后马上⽣效⽆须重启,这个变量也可通过修改注册表:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment下path的值设置,但需要重启系统后⽣效。
说明:如果把这些⽂件和⽬录结构拷贝到系统⽬录下(Win2000为Winnt\System32、WinXP为\Windows\System32、Win9x 为\Windows\System)则可以不需要设置环境变量path。
四、修改注册表,最后部分为需要修改的注册表内容,把⽂本保存为reg⽂件导⼊即可,其中两处C:\\Winnt\\System32需要修改成⽂件实际拷贝的⽬录。
五、程序中ADO连接字符串写法:
Provider=OraOLEDB.Oracle.1;Persist Security Info=True;Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = <;服务器名称或IP>)(PORT = 1521)))
(CONNECT_DATA =(SERVICE_NAME = <;全局数据库名称>)));User ID=<⽤户名>;Password=<;密码>
在<>中填进相应的值,就可连接上Oracle数据库了。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]
"ORACLE_HOME"="C:\\Winnt\\System32"
"NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\OLEDB]
"CacheType"="Memory"
"ChunkSize"="100"
"DistribTX"="1"
"FetchSize"="100"
"OSAuthent"="0"
"PLSQLRSet"="0"
"PwdChgDlg"="1"
"SchRstLng"="10000"
"UserDefFn"="0"
"DisableRetClause"="1"
"VCharNull"="1"
"TraceCategory"="0"
"TraceFileName"="c:\\"
"TraceLevel"="0"
"TraceOption"="0"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.Oracle.1]
@="Oracle Provider for OLE DB"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.Oracle.1\CLSID]
@="{3F63C36E-51A3-11D2-BB7D-00C04FA30080}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.Oracle]
@="Oracle Provider for OLE DB"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.Oracle\CLSID]
@="{3F63C36E-51A3-11D2-BB7D-00C04FA30080}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.Oracle\CurVer]
@="OraOLEDB.Oracle.1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.ErrorLooku
p.1]
@="Oracle OLE DB Error Lookup"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.ErrorLookup.1\CLSID]
@="{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.ErrorLookup]
@="Oracle OLE DB Error Lookup"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.ErrorLookup\CLSID]
@="{3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OraOLEDB.ErrorLookup\CurVer]
@="OraOLEDB.ErrorLookup.1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OracleInProcServer.XOraSession.3]
@="Oracle Objects For OLE"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OracleInProcServer.XOraSession.3\CLSID]
@="{3893B4A0-FFD8-101A-ADF2-04021C007002}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OracleInProcServer.XOraSession]
@="Oracle Objects For OLE"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OracleInProcServer.XOraSession\CLSID]
@="{3893B4A0-FFD8-101A-ADF2-04021C007002}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OracleInProcServer.XOraSession\CurVer]
@="OracleInProcServer.XOraSession.3"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OracleInProcServer.XOraServer.3]
@="Oracle Objects For OLE"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OracleInProcServer.XOraServer.3\CLSID]
@="{5CEA8296-F9B9-11D1-9E07-00C04FC2BED8}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OracleInProcServer.XOraServer]
@="Oracle Objects For OLE"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OracleInProcServer.XOraServer\CLSID]
@="{5CEA8296-F9B9-11D1-9E07-00C04FC2BED8}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\OracleInProcServer.XOraServer\CurVer]
@="OracleInProcServer.XOraServer.3"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ORADC.ORADCCtrl.1]
@="ORADC Control"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ORADC.ORADCCtrl.1\CLSID]
@="{EC4CF635-D196-11CE-9027-02608C4BF3B5}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}]
@="OraOLEDB.Oracle"
"OLEDB_SERVICES"=dword:ffffffff
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\ExtendedErrors] @="Extended Error Lookup Service"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\ExtendedErrors\ {3FC8E6E4-53FF-11D2-BB7D-00C04FA30080}]
@="Oracle OLE DB Error Lookup"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\InprocServer32] @="C:\\Winnt\\System32\\OraOLEDB.dll"
"ThreadingModel"="Both"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\OLE DB Provider]
@="Oracle Provider for OLE DB"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\ProgID]
@="OraOLEDB.Oracle.1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-00C04FA30080}\TypeLib]
@="{0BB9AFD1-51A1-11D2-BB7D-00C04FA30080}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3F63C36E-51A3-11D2-BB7D-
00C04FA30080}\VersionIndependentProgID]
@="OraOLEDB.Oracle"
2004-7-26 11:16:17
查看评语
2004-7-26 16:08:17 另外⼀个⼩问
题也解决了。⾃⼰写了个⼩程序,点⼀个按钮就把 Oracle 8.1.6 OLEDB 驱动安装、注册好,但是碰到⼀个⼩问题,在程序中把安装好的Oracle驱动的路径写进环境变量Path,我⽤代码:
FReg.WriteString('Path',FFPath+';'+k);
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment')));
但是在dos下查看path却发现,路径中的%SystemRoot%并未被替换成相应的C:\Winnt,⽽是原样显⽰
为%SystemRoot%,google了半天,也没搞定,忽然发现,注册表中path的类型和别的不太⼀样,是REG_EXPAND_SZ,难道……马上改⽤
FReg.WriteExpandString('Path',FFPath+';'+k);
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment')));
果然搞定。
2004-10-21 16:41:48 已试过,⽤在Oracle 9i没问题。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。