我想让别人选择连接那个库,另外怎么记录下用户输入的数据源,以便在下次的时候
在下拉列表框中显示用户配置过的数据源????
谢谢帮助!!!!!!!!!!!!!
在下拉列表框中显示用户配置过的数据源????
谢谢帮助!!!!!!!!!!!!!
解决方案 »
- MSChart20.ocx注册问题
- CreateDC("DISPLAY",NULL,NULL,NULL)和GetDC(NULL)有什么区别?
- 请教,在使用DirectDraw播放H264/RMVB等格式视频时如何计算每秒播放帧数
- mfc OnPaint()在多线程中调用会出错。这是为什么。谁能告诉如何解决。万分感谢
- ipv6中写组播程序遇到的问题
- 画线
- 急!!!我的MSDN安装后不能运行,怎么回事?
- 语音编程的问题?
- 关于CreateFileMapping的几个小问题?
- 新语言新环境在一个礼拜之内上手
- 急!安装vc6时遇到的问题,高分求助!
- 请问各位大侠们,VC++怎样用对话框的形式显示HTML文件?
SQLHENV m_hSQLEnvironment;//环境变量
CString m_sErrorMsg;//记录最后一条错误信息
SQLRETURN m_iSQLResult;
void class::GetODBCHandle()
{
m_iSQLResult = SQL_SUCCESS;
m_hSQLEnvironment = SQL_NULL_HANDLE;
m_iSQLResult = SQLAllocHandle(SQL_HANDLE_ENV,
SQL_NULL_HANDLE,
&m_hSQLEnvironment);
if (m_iSQLResult != SQL_SUCCESS)
{
m_sErrorMsg = "SQLAllocHandle failed";
return;
}
//设置ODBC版本属性,否则,系统将返回错误
m_iSQLResult = SQLSetEnvAttr(m_hSQLEnvironment,
SQL_ATTR_ODBC_VERSION,
(SQLPOINTER)SQL_OV_ODBC3,
0);
if (m_iSQLResult != SQL_SUCCESS)
{
m_sErrorMsg = "SQLSetEnvAttr 设置ODBC版本失败!";
return;
}
}SQLRETURN class::GetDSNName(CString &dsnName, SQLUSMALLINT direction)
{
SQLSMALLINT dataLen1,dataLen2;
SQLCHAR sTemp[DSNCOLLECTION_BUFLEN];
SQLCHAR sDesc[DSNCOLLECTION_BUFLEN]; //查找DSN名称
m_iSQLResult = SQLDataSources(m_hSQLEnvironment,
direction,
sTemp,
DSNCOLLECTION_BUFLEN,
&dataLen1,
sDesc,
DSNCOLLECTION_BUFLEN,
&dataLen2); switch (m_iSQLResult)
{
case SQL_SUCCESS:
case SQL_SUCCESS_WITH_INFO:
dsnName = sTemp;
break;
case SQL_NO_DATA://无数据
m_sErrorMsg = "No more DSNs to enumerate";
break;
case SQL_ERROR://出错
{
SQLCHAR sState[10];
SQLINTEGER iNativeError;
SQLCHAR sMsg[DSNCOLLECTION_BUFLEN];
(void)SQLGetDiagRec(SQL_HANDLE_ENV,
m_hSQLEnvironment,
1,
sState,
&iNativeError,
sMsg,
DSNCOLLECTION_BUFLEN,
&dataLen2);
m_sErrorMsg.Format("SQL_ERROR: %s:%s",sState,sMsg);
}
break;
case SQL_INVALID_HANDLE:
m_sErrorMsg = "无效句柄!";
break;
default:
m_sErrorMsg = "未知错误!";
}
return m_iSQLResult;
}
输出数据源到你想要的地方
if(this->GetDSNName(m_sDSNName,SQL_FETCH_FIRST) == SQL_SUCCESS) //搜索所有数据源
{
for(SQLRETURN sqlreturn = SQL_SUCCESS;sqlreturn == SQL_SUCCESS;)
{
//这里输出就m_sDSNName就可以了
sqlreturn = this->GetDSNName(m_sDSNName,SQL_FETCH_NEXT);
}
}
else
{
// AfxMessageBox(this->m_sErrorMsg);
return m_sErrorMsg;
}
return m_sErrorMsg;
windows目录下有一个文件,保存了所有的odbc配置信息。用搜索文件内容(搜索栏输入你的配置名)可找到该文件。接着你自己看着办吧