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.总结

  成功在于尝试!

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

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

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

时间: 2024-08-06 13:14:20

Windows下使用ODBC API访问数据库之关键的相关文章

局域网内任何一台pc上windows下eclipse远程连接hbase数据库

通过很长一段时间的反复失败,终于在windows下实现远程连接hbase数据库,在不断的尝试过程中深感一个详细的文档的重要性,于是就把我配置的详细过程记录下来.文中如果有些地方用词不当,或者理解错误,欢迎您们评论. 一.运行平台 hbase服务器端:Ubuntu 14.04 64位:HBASE1.1.3:JAVA 1.8: hbase客服端:windows32/64位:JAVA1.8:eclipse 4.5: 二.linux服务器端环境配置 1.  安装java 1.8软件 1)下载java软件

CAD.Net中访问数据库的关键语句之一

.Net中所有对CAD数据库的处理都是通过“事务处理”来进行的,所以所有涉及访问CAD中对象的语句必须在下面的语句括号中执行. using (Transaction trans = db.TransactionManager.StartTransaction()) { 语句…… } CAD.Net中访问数据库的关键语句之一

windows下不打开浏览器访问网页的方法

我们打开电脑,大多时候都是打开浏览器在上网.这都是通过浏览器来实现的,然而windows下有没有办法不通过浏览器也可以像linux那样达到访问网页的目的呢?这当然少不了批处理或者VBScript.然而无论是bat还是vbs都免不了要调用浏览器,关闭浏览器,这都不是我想要的.那么windows下会不会也有curl的用法呢?于是网上查找了一通,发现了这样一篇文章windows下安装和调用curl的方法.这完全就是linux下curl的用法,好了这就是我要的. 于是有了以下这段bat脚本原型 @ech

windows下用C/C++访问MySQL数据库

MySQL安装成功以后,我们可以用高级语言来访问它.win7下访问方法: 本测试采用eclipse,用的mingw64编译 首先,包含路径,然后包含库,还注意把libmysql单独列出来. C++测试代码为: #include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include "mysql.h"int main(int argc, char* argv[]){ int res,j; M

解决CentOS内网机通过Windows下假设代理来访问网络

新分配的CentOS运行在内网环境下,无法连接Internet,为了能够使用yum部署OpenVas工具,需要在内网下一台Windows主机架设代理,作代理服务器来令虚拟机上网. 代理服务器选择了CCproxy,下载并安装CCProxy,配置所要代理的协议,并选择能够联外网的网卡ip 在下方本机局域网IP选择可以与CentOS虚拟机进行通讯的网卡地址,点击确定 账号管理根据个人需要进行配置,我这边选择的是允许所有(建议最好为虚拟机配置账号,方便以后调试和监控) 1..在CentOS中配置全局代理

创业小坑:内网域名 在windows下能nslookup,但ping不通,也无法访问。而在linux下正常。

使用巴法络(BUFFALO )LS-XL 网络硬盘盒开启了FTP服务,IP是172.16.0.21 在windows和linux上,都可以访问ftp://172.16.0.21,现在想使用域名访问,便于大家记忆. 内网dnsmasq作为DNS服务器,IP为172.16.0.1 /etc/dnsmasq.conf 配置如下: address=/ftp/172.16.0.21 按道理说,现在访问ftp://ftp 就可以了.结果不行,实际情况是这样的: linux:可以用内网域名访问. window

C语言ODBC操作MySQL数据库

 数据库及其编程API来源于不同的背景,开发人员可以从众多的数据库中选择一种,每种数据库都有自己的一套编程API,这就为数据库编程造成了很大的局限性.SQL是标准化数据库编程接口的一种尝试,然而各种数据库所支持的SQL又有所不同. ODBC的设计目的是允许访问多种数据库,ODBC为数据库供应商提供了一致的ODBC驱动程序标准,遵循这个标准开发的数据库驱动程序,都可以被开发人员通过ODBC API透明地访问,而不必关心实际的数据库是什么.在这里,ODBC所做的,就是接收开发人员的数据库操作指令,调

python访问数据库

1. python DB api简介 python DB api python访问数据库的统一接口规范,详细可参考https://www.python.org/dev/peps/pep-0249/ python DB api中主要包括三个重要的对象 数据库连接对象 connection,数据库交互对象 cursor和数据库异常类 exceptions 2. 使用python DB API访问数据库的流程 3. python+MYSQL开发环境的配置 python-mysql connector

从Docker在Linux和Windows下的区别简单理解Docker的层次结构

上篇文章我们成功在Windows下安装了Docker,输出了一个简单的Hello World程序.本文中我们将利用Docker已有的云端镜像training/webapp来发布一个简单Python的Web程序,在浏览器中输出hello world. 本文内容的测试环境是Windows7下的Docker,用例基于官方文档用例.   一:从运行一个简单的Python Web程序说起 启动Docker客户端并登陆.在客户端中输入以下内容: $ sudo docker run -d -P trainin