RT~就是udl?并获得连接字符串?
解决方案 »
- 有用过TeeChart控件的没有?
- USB 打印机 能开钱箱吗?
- 怎么将char[]赋值给*string
- 关于使用WSAAsyncSelect的服务器端的源代码
- 请问 怎样把一个目录下的所有扩展名为.rmvb的文件改为扩展名为.avi?
- 可能是很难的问题, 如何判断一段字符串是否为UTF-8编码的?
- 求助:需要显示SPOT全色TIFF格式(8bits)遥感图像的源代码.请高手帮助!
- 请问用什么样的方法能取得显示器的分辨率和屏幕的宽度和高度?
- 如何接收键盘消息,并让指定的按钮响应
- 有谁知道怎么做PDG文档?????????
- 如何从消息中取出我的数据?
- 事件对象的 有/无信号状态 是如何被存储器来的?
方法是正确的,但不保证代码没有错误
// 导入 DataLinks类型库
#pragma warning(disable:4192)
#import "C:\\Program Files\\Common Files\\System\\Ole DB\\Oledb32.dll" no_namespace
#pragma warning(default:4192)CString PromptEdit(_Connection* pConnection)
{
CString szConn;
IDataSourceLocatorPtr pLocator; pLocator.CreateInstance(_T("DataLinks"));
if(pLocator == NULL)
return ""; if(pConnection == NULL)
{
pConnection = pLocator->PromptNew();
szConn = (LPCTSTR)m_pConnection->ConnectionString;
pConnection->Release();
}
else
{
pLocator->PromptEdit((IDispatch**)&pConnection);
pDisp->Release();
szConn = (LPCTSTR)m_pConnection->ConnectionString;
}
return szConn;
}
http://www.chinaaspx.com/archive/vc/13454.htm
如果no_namespace的话,会有很多redefine错误,我加了rename_namespace("oledb")(根据楼上提供的网址)
另外pConnection->Release();这句会导致在Release中抛出异常,我估摸着原因可能是因为没有连接数据库的话就释放掉的话会抛出异常我试了试我的简化版能行,太感谢了~
ADODB::_ConnectionPtr pConnection;
pConnection.CreateInstance(_uuidof(ADODB::Connection));
CString szConn;
oledb::IDataSourceLocatorPtr pLocator; pLocator.CreateInstance(_uuidof(oledb::DataLinks));
pConnection = pLocator->PromptNew();
szConn = (LPCTSTR)pConnection->ConnectionString;
/*pLocator->PromptEdit((IDispatch**)&pConnection);
pDisp->Release();
szConn = (LPCTSTR)m_pConnection->ConnectionString;
*/ AfxMessageBox(szConn);
谢谢~看附带的demo下载链接转到codeguru去了,下载链接应该是无效了,一时也没找到原文看了下获益匪浅,不过其中的import似乎有些问题,我改了下,如下:
#pragma warning(disable:4192)
#import "C:\\Program Files\\Common Files\\System\\Ole DB\\Oledb32.dll" \
rename_namespace("oledb")
#pragma warning(default:4192)#import "c:\\Program Files\\Common Files\\System\\ADO\\msado15.dll" \
rename("EOF", "EndOfFile")
还是集思广义了,下面不能用no_namespace(加的话会抱错),用的时候需要加上命名空间,比如上面贴的代码