如何查询ODBC数据源的信息? 你可以看一看MSDN中的例子StdReg,他比较详细! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是我的一个比较完整的代码,使用了一个CListCtrl列出系统里的数据源 /////////////////////////////////// //Try SQLDataSources() Function SQLHANDLE hConn=SQL_NULL_HANDLE; SQLHENV hODBCEnv=SQL_NULL_HANDLE; SQLRETURN Rs=NULL; Rs= ::SQLAllocHandle (SQL_HANDLE_ENV,SQL_NULL_HANDLE,&hODBCEnv); if(Rs!=SQL_SUCCESS)return; Rs=SQLSetEnvAttr(hODBCEnv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER); if(Rs!=SQL_SUCCESS) MessageBox("Set Version Failure"); //Clear and Init The List Box; LVCOLUMN Column; DWORD Style; if(m_ListCtrl.GetItemCount ()) m_ListCtrl.DeleteAllItems (); memset(&Column,0,sizeof(Column)); Column.pszText=new char [100]; Column.cchTextMax = 100; Column.mask=LVCF_WIDTH |LVCF_FMT|LVCF_TEXT|LVCF_SUBITEM ; while(m_ListCtrl.GetColumn (0,&Column)) { m_ListCtrl.DeleteColumn (0); } delete Column.pszText; memset(&Column,0,sizeof(Column)); Column.mask=LVCF_WIDTH |LVCF_FMT|LVCF_TEXT|LVCF_SUBITEM ; Column.fmt=LVCFMT_LEFT ; Column.cx=100; Column.pszText=new char[100]; strcpy(Column.pszText,"DSN"); m_ListCtrl.InsertColumn (0,&Column); delete Column.pszText; m_ListCtrl.InsertColumn (1,"Description",LVCFMT_LEFT,200); Style=m_ListCtrl.GetStyle (); Style|=LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES; m_ListCtrl.SetExtendedStyle (Style); //Begin UWORD fDirection= SQL_FETCH_FIRST; SQLCHAR szDSN[SQL_MAX_DSN_LENGTH+1]=""; SQLCHAR szDescription[100]; while (Rs==SQL_SUCCESS) { Rs=::SQLDataSources (hODBCEnv,fDirection, szDSN,sizeof(szDSN),NULL, szDescription,sizeof(szDescription),NULL ); fDirection=SQL_FETCH_NEXT; if((Rs!=SQL_SUCCESS)&&(Rs!=SQL_NO_DATA_FOUND)) { MessageBox((char *)szDescription,(char *)szDSN,MB_OK); } else { if((Rs!=SQL_NO_DATA_FOUND)) { m_ListCtrl.InsertItem (m_ListCtrl.GetItemCount(),(char *)szDSN,0); m_ListCtrl.SetItemText (m_ListCtrl.GetItemCount()-1,1,(char *)szDescription); } } } //////////////////////////////////////////////// // if(hODBCEnv!=SQL_NULL_HANDLE) { ::SQLFreeHandle (SQL_HANDLE_ENV,hODBCEnv); } 一个有关指针的问题,调试几遍都不对,晕了 高分请教关于从internet上读取文件的问题 怎样在程序里播放mp3?? 一个关于析构函数的问题 请教try catch()结构的用法 大家看看我得错误在哪里??? 有关 MDI+拆分窗口+多视 的技术,不知能否实现? 子窗口收不到WM_DROPFILES消息? 公式计算程序,请各位高人给一点帮助吧, 怎样产生目录对话框? 怎样动态的显示磁盘上的一个图片? 如何在VC使用位图
///////////////////////////////////
//Try SQLDataSources() Function
SQLHANDLE hConn=SQL_NULL_HANDLE;
SQLHENV hODBCEnv=SQL_NULL_HANDLE;
SQLRETURN Rs=NULL;
Rs= ::SQLAllocHandle (SQL_HANDLE_ENV,SQL_NULL_HANDLE,&hODBCEnv);
if(Rs!=SQL_SUCCESS)return;
Rs=SQLSetEnvAttr(hODBCEnv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
if(Rs!=SQL_SUCCESS) MessageBox("Set Version Failure");
//Clear and Init The List Box;
LVCOLUMN Column;
DWORD Style;
if(m_ListCtrl.GetItemCount ())
m_ListCtrl.DeleteAllItems (); memset(&Column,0,sizeof(Column));
Column.pszText=new char [100];
Column.cchTextMax = 100;
Column.mask=LVCF_WIDTH |LVCF_FMT|LVCF_TEXT|LVCF_SUBITEM ;
while(m_ListCtrl.GetColumn (0,&Column))
{
m_ListCtrl.DeleteColumn (0);
}
delete Column.pszText; memset(&Column,0,sizeof(Column));
Column.mask=LVCF_WIDTH |LVCF_FMT|LVCF_TEXT|LVCF_SUBITEM ;
Column.fmt=LVCFMT_LEFT ;
Column.cx=100;
Column.pszText=new char[100];
strcpy(Column.pszText,"DSN");
m_ListCtrl.InsertColumn (0,&Column);
delete Column.pszText;
m_ListCtrl.InsertColumn (1,"Description",LVCFMT_LEFT,200);
Style=m_ListCtrl.GetStyle ();
Style|=LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES;
m_ListCtrl.SetExtendedStyle (Style);
//Begin
UWORD fDirection= SQL_FETCH_FIRST;
SQLCHAR szDSN[SQL_MAX_DSN_LENGTH+1]="";
SQLCHAR szDescription[100];
while (Rs==SQL_SUCCESS)
{
Rs=::SQLDataSources (hODBCEnv,fDirection,
szDSN,sizeof(szDSN),NULL,
szDescription,sizeof(szDescription),NULL
);
fDirection=SQL_FETCH_NEXT;
if((Rs!=SQL_SUCCESS)&&(Rs!=SQL_NO_DATA_FOUND))
{
MessageBox((char *)szDescription,(char *)szDSN,MB_OK);
}
else
{
if((Rs!=SQL_NO_DATA_FOUND))
{
m_ListCtrl.InsertItem (m_ListCtrl.GetItemCount(),(char *)szDSN,0);
m_ListCtrl.SetItemText (m_ListCtrl.GetItemCount()-1,1,(char *)szDescription);
}
}
} ////////////////////////////////////////////////
//
if(hODBCEnv!=SQL_NULL_HANDLE)
{
::SQLFreeHandle (SQL_HANDLE_ENV,hODBCEnv);
}