最近做项目涉及到vb连接oracle数据库,而用户希望不安装oracle客户端实现。最终通过总结当前的各种技术,采用了以下方案:
1、收集下列动态链接库DLL,可以在oracle9i和oracle10g中找到。
oci.dll
ocijdbc.dll
ociw32.dll
orannzsbbl1.dll
oraoccil1.dll
oraociei11.dll
ojdbc14.jar和classes12.jar
2、建立数据库链接文件,格式与oracle中的链接一致。
DataSourceName=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oracle9i)
)
)
3、vb项目中实现链接,关键代码为:
引用:Private Declare Function SetEnvironmentVariable Lib "kernel32"
Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal
lpValue As String) As Long
调用:
PathStr
= Environ("path")
If
Right(PathStr, 1) <> ";" Then PathStr
= PathStr & ";"
If InStr(UCase(";" & PathStr), UCase(";"
& oraclePath & ";")) = 0 Then
PathStr = PathStr & oraclePath &
";"
SetEnvironmentVariable "PATH",
PathStr
SetEnvironmentVariable "NLS_LANG", "SIMPLIFIED
CHINESE_CHINA.ZHS16GBK"
SetEnvironmentVariable "TNS_ADMIN",
oraclePath
conn.Open
"Provider=MSDAORA.1;User ID=" + databasename + ";Password=" +
password + ";Data Source=ptx;"