用下面的代码能成功连接SQL2000,但是连接Oracle出现问题;
是需要import别的库文件,还是要修改数据库连接字符串,
请大家帮忙看下,谢谢////////// DBTestDlg.cpp
BOOL CDBTestDlg::OnInitDialog()
{
if(!AfxOleInit())
{
AfxMessageBox("OLE初始化出错!");
return FALSE;
}
}////////// stdafx.h
//引入SQLO安装目录下的ADO库文件
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")////////// DBControl.cpp//获取当前目录(用来找到INI文件)
CString CDBControl::GetModuleDir()
{
char pFileName[256];
GetModuleFileName( NULL, pFileName, 255 );
CString csFullPath(pFileName);
int nPos = csFullPath.ReverseFind( _T('\\') );
if( nPos < 0 )
return CString("");
else
return csFullPath.Left( nPos );
}//读配置文件,初始化数据库连接字符串
void CDBControl::ReadIni()
{
CString retVal;
CString iniPath;
iniPath = GetModuleDir();
iniPath.Insert(iniPath.GetLength(),"\\config.ini");
GetPrivateProfileString("DB参数设置","服务器名","Default",strServer.GetBuffer(0),MAX_PATH,iniPath);
GetPrivateProfileString("DB参数设置","数据库名","Default",strDataBase.GetBuffer(1),MAX_PATH,iniPath); GetPrivateProfileString("DB参数设置","用户名","Default",strUserName.GetBuffer(2),MAX_PATH,iniPath);
GetPrivateProfileString("DB参数设置","密码","Default",strPassword.GetBuffer(3),MAX_PATH,iniPath);
retVal.Format("Driver=SQL Server;Server=%s;Database=%s;UID=%s;PWD=%s",strServer,strDataBase,strUserName,strPassword);
strConn = retVal; //数据库连接字符串(全局变量)
}//连接数据库,并查询数据表
BOOL CDBControl::mySQLQuery(TTSDATA_2CONVERT* TTSInfo)
{
ReadIni(); //获取数据库连接字符串 (全局变量)
BOOL retFlg = FALSE;
try
{
if(FAILED(pPtr.CreateInstance("ADODB.Recordset")))
{
return FALSE;
}
//数据库连接字符串(全局变量)
CString strSRC=strConn;
//查询语句
CString strSQL = "select username,sendid,content from VOI_SendSound where content is not null and switchflag=0 and rownum<=100 and sendtime<sysdate";
_variant_t varSRC(strSRC);
_variant_t varSQL(strSQL);
/****************打开数据库出现错误!!!!!!***********************/
if(FAILED(pPtr->Open(varSQL,varSRC,adOpenStatic,adLockOptimistic,adCmdText)))
{
/****************打开数据库出现错误!!!!!!***********************/
retFlg= FALSE;
pPtr.Release();
return retFlg;
}
while(!pPtr->GetadoEOF())
{
//把查询结果填充到结构体中
retFlg = TRUE;
pPtr->MoveNext();
}
pPtr->Close(); //关闭数据库连接,释放资源
pPtr.Release();
}
catch (CException* e)
{
return FALSE;
}
return retFlg;
}
是需要import别的库文件,还是要修改数据库连接字符串,
请大家帮忙看下,谢谢////////// DBTestDlg.cpp
BOOL CDBTestDlg::OnInitDialog()
{
if(!AfxOleInit())
{
AfxMessageBox("OLE初始化出错!");
return FALSE;
}
}////////// stdafx.h
//引入SQLO安装目录下的ADO库文件
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")////////// DBControl.cpp//获取当前目录(用来找到INI文件)
CString CDBControl::GetModuleDir()
{
char pFileName[256];
GetModuleFileName( NULL, pFileName, 255 );
CString csFullPath(pFileName);
int nPos = csFullPath.ReverseFind( _T('\\') );
if( nPos < 0 )
return CString("");
else
return csFullPath.Left( nPos );
}//读配置文件,初始化数据库连接字符串
void CDBControl::ReadIni()
{
CString retVal;
CString iniPath;
iniPath = GetModuleDir();
iniPath.Insert(iniPath.GetLength(),"\\config.ini");
GetPrivateProfileString("DB参数设置","服务器名","Default",strServer.GetBuffer(0),MAX_PATH,iniPath);
GetPrivateProfileString("DB参数设置","数据库名","Default",strDataBase.GetBuffer(1),MAX_PATH,iniPath); GetPrivateProfileString("DB参数设置","用户名","Default",strUserName.GetBuffer(2),MAX_PATH,iniPath);
GetPrivateProfileString("DB参数设置","密码","Default",strPassword.GetBuffer(3),MAX_PATH,iniPath);
retVal.Format("Driver=SQL Server;Server=%s;Database=%s;UID=%s;PWD=%s",strServer,strDataBase,strUserName,strPassword);
strConn = retVal; //数据库连接字符串(全局变量)
}//连接数据库,并查询数据表
BOOL CDBControl::mySQLQuery(TTSDATA_2CONVERT* TTSInfo)
{
ReadIni(); //获取数据库连接字符串 (全局变量)
BOOL retFlg = FALSE;
try
{
if(FAILED(pPtr.CreateInstance("ADODB.Recordset")))
{
return FALSE;
}
//数据库连接字符串(全局变量)
CString strSRC=strConn;
//查询语句
CString strSQL = "select username,sendid,content from VOI_SendSound where content is not null and switchflag=0 and rownum<=100 and sendtime<sysdate";
_variant_t varSRC(strSRC);
_variant_t varSQL(strSQL);
/****************打开数据库出现错误!!!!!!***********************/
if(FAILED(pPtr->Open(varSQL,varSRC,adOpenStatic,adLockOptimistic,adCmdText)))
{
/****************打开数据库出现错误!!!!!!***********************/
retFlg= FALSE;
pPtr.Release();
return retFlg;
}
while(!pPtr->GetadoEOF())
{
//把查询结果填充到结构体中
retFlg = TRUE;
pPtr->MoveNext();
}
pPtr->Close(); //关闭数据库连接,释放资源
pPtr.Release();
}
catch (CException* e)
{
return FALSE;
}
return retFlg;
}
解决方案 »
- 一个纠缠不清的链接错误!!哭求!谢谢!!!!
- 关于CreateProcess的pszCurDir参数问题
- 一个复制目录的函数
- 请问在单文档中当My**View继承FormView时,运行时用什么函数可以退出整个程序。
- 神秘程序,5行能算圆周率pi到800位, 和mathematic中结果比对, 竟然完全准确.
- 如何在程序中修改dialog的标题?
- 如何去掉最大化按钮,而不是变灰??如何禁止拉伸窗口???在线等待!!!
- VC 6.0++错误
- 在上海找工作:最好是C++相关的软件开发
- 一个在基于对话框的应用程序中发送消息的问题.
- 关于VC++的绘图问题
- 如何利用WebBrowser控件获取解析javascript后的html源代码?
_ConnectionPtr pConn;
_RecordsetPtr pPtr;
pConn.CreateInstance(__uuidof(Connection));
try
{
pConn->ConnectionTimeout = 5;
pConn->Open(_T("DSN=192.168.1.10"), _T("callcenter"),_T("callcenter"), adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
CoUninitialize();
retVal.Format("Provider=OraOLEDB.Oracle.1;User ID=%s;Password=%s;" "Data Source='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" "(HOST=%s)(PORT=1521)))(CONNECT_DATA=(SID=%s)))'",strUserName,strPassword,strServer,strDataBase);
retVal.Format("Provider=OraOLEDB.Oracle.1;User ID=%s;Password=%s;" "Data Source='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" "(HOST=%s)(PORT=1521)))(CONNECT_DATA=(SID=%s)))'",strUserName,strPassword,strServer,strDataBase);