Windows下使用ODBC API访问数据库之关键

本文采用SQL2005 + VS2008环境,以ODBC API方式成功连接数据库。

 

1.SQL安装和环境配置

  这部分网上随便搜一下都有很多资料,而且很容易就可以配置成功。

  注意的关键点: SA账号配置; 远端连接配置。

  配置成功后,能成功连接远端数据库,如下图所示:

   

  

 

2. 建控制台程序,使用ODBC API方式,语言C/C++均可。

  关于ODBC的测试代码,在此不做过多的展示,皆因网上随便一搜都有很多。

  这里主要说明的是SQLDriverConnect()执行失败返回-1的问题。

  这个问题相信很多刚接触ODBC的人,都很容易出现,而且网上往往找不到有用的解决方法。

 

在这之前,我想先介绍一个函数ProcessLogMessages()。

  这个函数来自MS文档,用于显示一个错误的详细情况,你可以在你的程序中直接使用。

  此函数的具体代码可参见《ODBC API开发教程》。 

  使用例子:

1 char* szConnStrIn="Driver=SQL Server;Server=192.168.1.128,1433;UID=sa;PWD=sa;";
2 r = SQLDriverConnect(phdbc,NULL,(SQLCHAR*)szConnStrIn,SQL_NTS,SQLConOut,sizeof(SQLConOut),&ConOutLen,SQL_DRIVER_COMPLETE);
3 if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
4     //连接失败! 
5     ProcessLogMessages(SQL_HANDLE_DBC,phdbc,"YYYYYY",1);
6     return -1;
7 }

 

3.连接数据库关键问题及解决方法

<->Driver问题:

  

  我们可以查看PC是否装了这样的数据库驱动,位置为:

      控制面板\所有控制面板项\管理工具\数据源(ODBC) 

  

  我这里只装了MSSQL的数据库,如果要用其他数据库,如MySQL、ORACLE,则需要先把数据库的驱动装好。

  上图两个驱动都可以连接SQL Server数据库,喜欢用SQL Native Client驱动也可修改代码如下:

char* szConnStrIn="Driver=SQL Native Client;Server=192.168.1.128,1433;UID=sa;PWD=sa;";

 

<->Server或认证问题:

  

  

  通常是数据库地址,端口号,用户名密码这类问题导致,检查一下就好。

 

<->执行语句失败:

  执行例子:

1 // *) 执行具体的sql
2     r = SQLExecDirect(stmt, (SQLCHAR*)"select * from dbo.MyTab", SQL_NTS);
3     if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
4         cout<<"执行失败!"<<r<<endl;
5         ProcessLogMessages(SQL_HANDLE_STMT,stmt,"YYYYYY",0);
6         return -1;
7     }

  

  这是因为我们在connect的时候没有选择数据库,所以执行失败。

  我们可以修改Connect时的选项,指定Database,如下:

char* szConnStrIn="Driver=SQL Native Client;Server=192.168.1.128,1433;UID=sa;PWD=sa;Database=chroma;";

 

4.总结

  成功在于尝试!

  以上均是本人在的一些尝试所得之经验,虽所涉及之数据库只是皮毛;

  但多做尝试,是通往更高深领域的必经之路。

 

 

posted @ 2014-06-24 12:08  yison.li  阅读(2413)  评论(0编辑  收藏  举报