Oracle oledb 打包并集成到程序安装包(VC ADO访问Oracle)
来源:互联网 发布:linux cut uniq 编辑:程序博客网 时间:2024/05/17 04:10
最近有一个项目和oracle交互,我用的是ADO的方式进行试问操作。
首先把数据库连接的东东记录一下,老了记性不好啊!
操作如下:
//连接串这么写的话就可以不用配置 tnsnames.ora配置文件了(网上很多教程都让改这个配置文件)
strConnect.Format("Provider=OraOLEDB.Oracle.1;Password=%s;Persist Security Info=True;User ID=%s;\
Data Source=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = %s)(PORT = %s)) )(CONNECT_DATA = (SID = %s)))\"",
strPWD, strUID, strHost, strPort, strSid);
hr = m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->ConnectionTimeout = lConnectTime;
hr = m_pConnection->Open((LPCTSTR)strConnect, "", "", adModeUnknown);
if(FAILED(hr))
{
SHAREDATA.g_pMainFrame->Alert(_T("数据库连接失败,请检查数据库!"));
return FALSE;
}
}
catch(_com_error e)
{
CString err;
err.Format(_T("数据库连接错误!\r\n错误信息:%s:"),e.ErrorMessage());
SHAREDATA.g_pMainFrame->Alert(err);
return FALSE;
}
m_bConnectDB = TRUE;
//查询数据部分
if( m_pUserRecSet )
{
if( m_pUserRecSet->State )
m_pUserRecSet->Close();
m_pUserRecSet = NULL;
}
try{
m_pUserRecSet.CreateInstance(__uuidof(Recordset));
m_pUserRecSet->Open("select * from xxx", m_pConnection.GetInterfacePtr(), \
adOpenDynamic, /*adOpenStatic, */
adLockOptimistic, adCmdText);
}
catch(_com_error& e)
{
AfxMessageBox(e.Description() + e.Source());
return;
}
//....
然后打包发布, 安装程序后一跑弹出数据连接错误, 百度,google知其需装oracle的oledb提供程序
知道原因好办,缺啥补啥!
http://www.oracle.com/technetwork/database/windows/utilsoft-088126.html
下载了ODAC101040.exe后安装, 数据库操作正常!
到此跑我们系统只需安装我们的程序包 和 ODAC101040.exe 中的 oracle Provider for oledb ... 组件。
开发给人员认为可以了,挺简单了,于是乎发给客户使用。
没想到客户马上跳起来, 大声嚷嚷:
1. 两步安装太复杂了
2. odac101040 有100多M 太大了
3. 我们要的是一个包,傻瓜式的点点就必须能用,改,必须改,马上改。。。
哎,客户是上帝,只能低声下气争取了点时间。
也对换位思考,如果我是客户也不想来回折腾,程序员就是要追求完美,拥抱变化,在变化中实现自我,呵呵, 扯一下蛋!
需求很明确了: 把oracle provider for oledb 相关的东东集成到程序安装包中,同时安装包不能太大!
万能的互联网,让我找到一篇文章: http://blog.csdn.net/dux003/article/details/5657531 (感谢作者)
步骤如下:
1. 按 《oracle oledb最小安装包制作 》的教程提取出oracle相关文件
2. 下载并安装Wise Installation System - Professional Edition来制作安装包 ( 网上有教程,略去)
按以上步骤搞还是花了一天时间, 主要是最小安装包中对“安装过程”的描述比较粗糙,主要是我对安装包制作不在行,大部分时间花在这,嘿嘿
有一些注意的点如下:
1. wise installation 不需要像步骤1相关文章指出那样导出key, 可以如下图把整个注册表项打包进去
2. 我是把文件oracle放到程序目录中去, 然后修改注册表中的项(我修改了所有的项):
注: 用%MAINDIR%可以动态的指定注册表的路径
3. 把oracle是相关路径加入到环境变量中去, 界面不知道怎么加, 用脚本加了,我加到最后:
到此oracle集成打包已经告一段落了。
然后把ODAC101040.exe的相关服务卸载掉,然后点击安装包开始安装, 期待激动人心的时刻到来, 等。。。。。
没有激动人心,等到数据库边接错误!!!
重启电脑后,嘿嘿, 不出现数据库连接错误了,小小一乐,但出现另一个更头痛的错误:
网上的 http://blog.csdn.net/dragoo1/article/details/10138847 这篇文件似乎有感觉,但我们不是服务器啊,检查环境变量
最后怀疑bin的dll不完整,把所有的oracle/bin的目录拷过来,再试可以了, 但貌似有点多,看了上面的错误应该是OLEDB相关的
蒙一回,把(原来bin中还剩余的OraOLEDB相关dll)
OraOLEDB10zhs.dll
OraOLEDBrfc10.dll
OraOLEDBrmc10.dll
拷进去!
再次运行, 激动人心的时刻真正到来!
- Oracle oledb 打包并集成到程序安装包(VC ADO访问Oracle)
- oracle oledb最小安装包制作
- VC下ADO访问远程ORACLE数据库
- VC下ADO访问远程ORACLE数据库
- ado+oracle远程访问出错---未找到提供程序。该程序可能未正确安装
- VC++ ADO Oracle
- VC++ ADO Oracle
- VC++里面 用ADO访问Oracle数据库[求助,特急]
- VC ADO连接Oracle,未找到提供程序
- vc ado链接oracle数据库
- VC ADO连接Oracle数据库
- VC ADO Oracle 读写BLOB
- VC ADO Oracle 修改BLOB
- vc ado oracle 0x800A0E7A
- 如何安装JSP并访问Oracle?
- VC打包安装程序
- ado.net oledb 调用oracle存储过程返回结果集
- 使用OLEDB访问数据时未在本地计算机上注册“OraOLEDB.Oracle”提供程序解决方案
- TotoiseSVN的基本使用方法
- bash split string into array
- XCL-Charts画曲线图(CurveChart) 例2
- C# 命名规范
- ios tableview 那些事(二十五)用故事板 自定义Tableview 不显示数据注意事项。
- Oracle oledb 打包并集成到程序安装包(VC ADO访问Oracle)
- 通过struts2的JSONResult返回json数据的配置
- UCM-001:Configuring Installer DisableNtfs8dot3 in window 7+
- java修改request的paramMap
- 依照测试用例分类(按功能)的结果生成对应的universe文件
- 我是如何跨专业走上IT之路的
- -bash: ./my_script: /bin/bash^M: bad interpreter: No such file or directory
- 5月,献给程序员们的经典巨著——APUE
- 用户无法保存SD报表ALV布局