惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
K
Kaspersky official blog
L
LINUX DO - 热门话题
P
Proofpoint News Feed
P
Privacy & Cybersecurity Law Blog
Google DeepMind News
Google DeepMind News
Attack and Defense Labs
Attack and Defense Labs
Cisco Talos Blog
Cisco Talos Blog
AI
AI
L
LINUX DO - 最新话题
H
Heimdal Security Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The GitHub Blog
The GitHub Blog
I
Intezer
Blog — PlanetScale
Blog — PlanetScale
有赞技术团队
有赞技术团队
S
Securelist
博客园_首页
IT之家
IT之家
Schneier on Security
Schneier on Security
博客园 - 叶小钗
罗磊的独立博客
WordPress大学
WordPress大学
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
MongoDB | Blog
MongoDB | Blog
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
W
WeLiveSecurity
The Register - Security
The Register - Security
D
DataBreaches.Net
S
Security @ Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
Recorded Future
Recorded Future
NISL@THU
NISL@THU
N
News and Events Feed by Topic
T
Tailwind CSS Blog
N
News and Events Feed by Topic
Cyberwarzone
Cyberwarzone
T
Tor Project blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com

博客园 - 夏日微风

mysql备份和恢复命令 urllib2下载时判断网页编码 使用setuptools自动安装python模块 Python的MySQL库 php2python Python中文支持小结 WordPress安装步骤 centos 5.6 升级php到5.3 vsftp 的默认目录位置 Linux Develop Notes Linux Command Notes C#格式化数值结果表 - 夏日微风 - 博客园 证监会新年联欢会节目单(征求意见稿) 命案十三宗 看港剧,学穿衣 - 欧阳震华 看港剧,学穿衣 - 张家辉 - 胖矮个 看港剧,学穿衣 - 林保怡 - 小矮个 看港剧,学穿衣 - 罗嘉良 - 土蛋 看港剧,学穿衣 - 苏永康 - 斯文丑男
在.NET中打开ODBC“选择数据源”对话框
夏日微风 · 2004-12-23 · via 博客园 - 夏日微风

在VB和C++中,都有相应的函数来打开ODBC的“选择数据源”对话框,且简单方便。


年轻气盛的.Net,偏偏抛弃了这个对话框;在类库中百复千转,就是没有找到。无奈之下,自己动手。真是信天信地不如信自己,连MS都不能信了,你说还能信谁呢?:)  权衡一翻后,选择了用VC开发一个小COM,在.NET中拉使用。


ODBC API中有 SQLDriverConnect,即是显示“选择数据源”对话框的。代码非常简单,不过十多行,与同好共享:

#ifdef UNICODE
    #define MYSQLCHAR    SQLWCHAR
#
else
    #define MYSQLCHAR    SQLCHAR
#endif

STDMETHODIMP CODBCSourceSelector::Open( OLE_HANDLE hwnd, BSTR 
*connectionString)
{
    CComBSTR bstrConnectionString;

    MYSQLCHAR szConnectOutput[MAX_CONNECT_LEN];
    memset( szConnectOutput, 
0, sizeof( szConnectOutput ) * sizeof( UCHAR ) );

    SQLHDBC hdbc 
= SQL_NULL_HANDLE;
    SQLHENV henv 
= SQL_NULL_HANDLE;

    SQLRETURN ret;
    ret 
= SQLAllocEnv( &henv );
    
if ( SQL_SUCCESS == ret || SQL_SUCCESS_WITH_INFO == ret )
    {
        ret 
= SQLAllocConnect( henv, &hdbc );
    }

    
    
if ( SQL_SUCCESS == ret || SQL_SUCCESS_WITH_INFO == ret )
    {
        HWND realWnd 
= (HWND)hwnd;
        
if ( !realWnd )
        {
            realWnd 
= ::GetDesktopWindow();
        }

        SQLSMALLINT cbConnStrOut 
= 0;
        ret 
= SQLDriverConnect( hdbc, realWnd,
            (MYSQLCHAR
*)NULL, 0
            szConnectOutput, _countof(szConnectOutput), 
            
&cbConnStrOut, 3 );

        
if ( SQL_SUCCESS==ret || SQL_SUCCESS_WITH_INFO==ret )
        {
            bstrConnectionString 
= (TCHAR*)szConnectOutput;

            SQLDisconnect( hdbc );
        }
    }


    SQLFreeConnect( hdbc );
    SQLFreeEnv( henv );

    
*connectionString = bstrConnectionString.Detach();

    
return S_OK;
}

整个 project 下载:https://files.cnblogs.com/dumack/ODBCSource.zip