我用ADO连接数据库,用的是UDL链接,编译的时候总是报错说是未发现数据源名称且未指定默认驱动程序 后来发现说是udl格式的文件是unicode的,不能读取。好像vc6.0不支持这样格式的udl文件吧,我重装了vc把所有的选项都选了,可还是不行急请高手指教!
//初始化数据库连接
HRESULT hr;
try
{
//实例化连接对象
hr = m_pConnection.CreateInstance(__uuidof(Connection));
if(SUCCEEDED(hr))
{
//设置连接串属性为UDL文件
m_pConnection->ConnectionString = "File Name = my_datal.udl";
//设置等待连接打开的时间为20s
m_pConnection->ConnectionTimeout = 20;
hr = m_pConnection->Open("","","",adConnectUnspecified);
if(FAILED(hr))
{
AfxMessageBox("open fail!");
return TRUE;
}
}
else
{
AfxMessageBox("createinstance of Connection fail!");
return TRUE;
}
}
catch (_com_error e)
{
//给出异常
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description()); AfxMessageBox(bstrSource+bstrDescription);
return TRUE;
}
//初始化数据库连接
HRESULT hr;
try
{
//实例化连接对象
hr = m_pConnection.CreateInstance(__uuidof(Connection));
if(SUCCEEDED(hr))
{
//设置连接串属性为UDL文件
m_pConnection->ConnectionString = "File Name = my_datal.udl";
//设置等待连接打开的时间为20s
m_pConnection->ConnectionTimeout = 20;
hr = m_pConnection->Open("","","",adConnectUnspecified);
if(FAILED(hr))
{
AfxMessageBox("open fail!");
return TRUE;
}
}
else
{
AfxMessageBox("createinstance of Connection fail!");
return TRUE;
}
}
catch (_com_error e)
{
//给出异常
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description()); AfxMessageBox(bstrSource+bstrDescription);
return TRUE;
}
>...
>hr = m_pConnection->Open("","","",adConnectUnspecified);
-----------------------------
看你用的字符串都还是普通的, 连个 _T 之类的宏都没有, 由此可见, 你并没有把项目设置成 _UINCODE 的版本形式。
http://community.csdn.net/Expert/TopicView.asp?id=5156340
这一句有两个错误
1等于号左右的空格要去掉
2udl文件要写绝对路径。如果要知道当前程序文件所在路径
GetModuleFilename(NULL...)得到当前程序文件所在路径,然后从中提取出来char *str = new char[256];
TCHAR tPath[MAX_PATH];
memset(tpath,0,sizeof(tPath)*sizeof(TCHAR));
::GetModuleFileName(NULL,tPath,MAX_PATH);CString str=tPath;int i=str.ReverseFind("\\");
if (i!=-1)
{
str=str.Mid(0,i);
}
str="File Name=" + str + "\\db.udl";
return;
try
{
_ConnectionPtr pConn = NULL ;
_RecordsetPtr pRs = NULL ;
_RecordsetPtr pRs2 = NULL ;
_CommandPtr comm = NULL ;
_ParameterPtr param =NULL ;
HRESULT hr = S_OK; _bstr_t strCnn("File Name=c:\\db.udl");
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation =adUseClient;
pConn->ConnectionTimeout =60; pConn->Open (_bstr_t(strCnn),_bstr_t(""),_bstr_t(""),adModeUnknown); if (pConn)
if (pConn->State == adStateOpen)
pConn->Close();
}
catch (_com_error pCome)
{
TRACE("Error info: %s \n", (LPCTSTR)(pCome.Description()));}::CoUninitialize();
_RecordsetPtr pRs = NULL ;
_RecordsetPtr pRs2 = NULL ;
_CommandPtr comm = NULL ;
_ParameterPtr param =NULL ;
HRESULT hr = S_OK;_bstr_t strCnn("File Name=c:\\db.udl");
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation =adUseClient;
pConn->ConnectionTimeout =60;pConn->Open (_bstr_t(strCnn),_bstr_t(""),_bstr_t(""),adModeUnknown);