在VS下用C语言连接SQLServer2008

原文:在VS下用C语言连接SQLServer2008

step1:启动SQLSERVER服务

step2:打建立数据库test,在test库中建立test表(a varchar(200),b varchar(200))
 step3:建立系统DSN,开始菜单 ->运行 ->odbcad32,
  添加->SQL SERVER Native Client 10.0
 名称:csql,服务器:localhost
 使用用户使用登录ID和密码的SQLSERVER验证,登录ID:sa,密码:pass
  更改默认的数据库为:test
 ...
 测试数据源,测试成功,即DNS添加成功。

-------------------------------------------------------------------

#include <stdio.h>   

#include <string.h>   
#include <windows.h>   
#include <sql.h>   
#include <sqlext.h>   
#include <sqltypes.h>   
#include <odbcss.h>   

SQLHENV henv = SQL_NULL_HENV;   
SQLHDBC hdbc1 = SQL_NULL_HDBC;   
SQLHSTMT hstmt1 = SQL_NULL_HSTMT;   

/*
    cpp文件功能说明:
    1.数据库操作中的添加,修改,删除,主要体现在SQL语句上
    2.采用直接执行方式和参数预编译执行方式两种
*/
int main(){   
    char a[200]="bbb";
    char b[200]="200";
    SQLINTEGER   p;
    RETCODE retcode;   
    UCHAR    szDSN[SQL_MAX_DSN_LENGTH+1]   =   "csql",   
            szUID[MAXNAME]   =   "sa",   
            szAuthStr[MAXNAME]   =   "pass";  
    //SQL语句
        //直接SQL语句
    UCHAR    sql[37] = "insert into test values('aaa','100')";
        //预编译SQL语句
    UCHAR    pre_sql[29] = "insert into test values(?,?)";
    //1.连接数据源
        //分配ODBC环境句柄

    retcode   =   SQLAllocHandle   (SQL_HANDLE_ENV,   NULL,   &henv);  

// 告诉ODBC这是一个3.0标准的应用程序  

 retcode   =   SQLSetEnvAttr(henv,   SQL_ATTR_ODBC_VERSION,   (SQLPOINTER)SQL_OV_ODBC3,   SQL_IS_INTEGER);   

        // 分配连接句柄并建立连接
    retcode   =   SQLAllocHandle(SQL_HANDLE_DBC,   henv,   &hdbc1);   
    retcode   =   SQLConnect(hdbc1,   szDSN,(SWORD)strlen(szDSN),   szUID,(SWORD)strlen(szUID),   szAuthStr,(SWORD)strlen(szAuthStr));    
    //判断连接是否成功
    if   (   (retcode   !=   SQL_SUCCESS)   &&   (retcode   !=   SQL_SUCCESS_WITH_INFO)   )   {     
        printf("连接失败!\n");
    }   else   {   
        //2.创建并执行一条或多条SQL语句
        /*
        1.分配一个语句句柄(statement handle)
        2.创建SQL语句
        3.执行语句
        4.销毁语句
        */
        retcode   =   SQLAllocHandle(SQL_HANDLE_STMT,   hdbc1,   &hstmt1);   
        //第一种方式
        //直接执行
        //添加操作
        //SQLExecDirect (hstmt1,sql,37);
        
        //第二种方式
        //绑定参数方式
        
         p   =   SQL_NTS;
        //1预编译
        SQLPrepare(hstmt1,pre_sql,29); //第三个参数与数组大小相同,而不是数据库列相同
        //2绑定参数值
        SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p);
        SQLBindParameter(hstmt1,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&b,0,&p);
        //3 执行
        SQLExecute(hstmt1);
        
        printf("操作成功!");
        //释放语句句柄
        SQLCloseCursor (hstmt1);
        SQLFreeHandle (SQL_HANDLE_STMT, hstmt1);
    
    }   
    //3.断开数据源
    /*
     1.断开与数据源的连接.
     2.释放连接句柄.
     3.释放环境句柄(如果不再需要在这个环境中作更多连接)
    */
    SQLDisconnect(hdbc1);    
    SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);   
    SQLFreeHandle(SQL_HANDLE_ENV, henv);   
    system("pause");
    return(0);   
}

-------------------------------------------------------------------------------------------------------------------------------------

注意,表名不能取mh_login,只能login

时间: 2024-10-12 14:51:33

在VS下用C语言连接SQLServer2008的相关文章

Windows下用C语言连接Mysql注意问题

原文:Windows下用C语言连接Mysql注意问题环境是:在VS6.0 安装Mysql后,我们需要相应的头文件以及lib文件,所以安装过程必须是完整安装.否则不会生成include文件夹哦~ 具体步骤如下: 1.完全安装mysql,这样才能生成include文件夹. 2.在Directories的标 签页中右边的"Show directories for" 下拉列表中选中"Includefiles", 然后在中间列表框中添加你本地安装MySQL的include目录

java连接sqlserver2008连不上,报错sqljdbc.dll这个包有错,但是我已经拷到那个目录下了啊

问题描述 java连接sqlserver2008连不上,报错sqljdbc.dll这个包有错,但是我已经拷到那个目录下了啊 请问还有其他方法吗,该配置的我都配置实在没办法了,百度百度个遍了 解决方案 你导入这个包试试:sqljdbc4.jar 解决方案二: sqljdbc.dll你这个是程序集啊,在C#里面用的,Java中要导 .jar的包 解决方案三: 这个有可能是jar包的问题,可以换个jar包试试,也有可能是sqlServer2008的连接问题 解决方案四: 拷贝sqljdbc4.jar这

如何使用c语言连接上linux的wifi

问题描述 如何使用c语言连接上linux的wifi 已经知道wifi的ssid/密码/加密方式wpa2加密,怎么使用c语言修改文件连接上wifi. 或者能使用shell命令连接上wpa2加密的wifi也行.急急急!求大神! 解决方案 linux 使用c语言连接mysql数据Linux 下 C语言连接MYSQL数据库Linux C语言内联汇编使用 解决方案二: 那个wifi不就是网络吗,它和你的电脑用的好像没有区别吧. 应该就是网络编程那块了,你去c语言里找这块的API啊 解决方案三: http:

debian下amule的kad连接始终被防火墙阻拦

问题描述 debian下amule的kad连接始终被防火墙阻拦 iptables已经将amule的几个端口加入了ACCEPT,而且端口已经修改了一次,就算端 口修改前是路由器的防火墙阻拦了那几个端口,那修改后怎么还是阻拦的,有没有大 神愿意指导指导,告诉小弟个究竟,小弟先在此叩首膜拜!

Win7系统下设置ADSL宽带连接

如果你懂得在xp系统下建立ADSL宽带连接,那应该在win7系统下也能轻松建立ADSL宽带连接. 在win7系统建立ADSL宽带连接,需要如下几步,很简单的几个步骤,就能完成: 1.首先建立宽带连接,WIN7和XP一样,在"网络"右键属性或"IE""连接"的Internet选项中都可以建立. 2. 3.点击网络邻居的"连接到Internet"或IE的Internet选项"添加"你便看到 4.点击宽带(PPP

数据库连接-如何使用c++语言连接各种数据库

问题描述 如何使用c++语言连接各种数据库 #include 在连接的时候显示 Cannot open include file: 'sqlca.h': No such file or directory执行 cl.exe 时出错.求教高人讲解如何连接sql数据库 解决方案 连数据库很简单啊,用ADO方式就行,具体方法,baidu一下,网上很多.我就不这里粘贴代码了.

c语言-在Linux下使用C语言实现IEC101规约

问题描述 在Linux下使用C语言实现IEC101规约 求教在Linux下使用C语言实现IEC101规约的方法技术,有写过相关程序的麻烦请加我的qq1258618577进行交流,如能得到有价值的帮助,定当好好答谢.

mac下mqsql安装后连接不上!!!

问题描述 mac下mqsql安装后连接不上!!! 我只是安装了mysql,不懂终端配置,,试了下网上的终端修改密码,都修改不来!!!! 解决方案 MAC连接安卓手机安装apk---------------------- 解决方案二: 如果不是没给root@localhost授权的话,就是密码错误.我以前遇到过一次,windows下,当时手误把密码改成乱码,后来在通过命令行修改密码才解决了 解决方案三: 你只是安装了,有没有设置初始密码,一般默认安装是没有密码的,需要初始化密码才可以登录 你直接执

c语言问题-Linux下的C语言程序问题无限循环

问题描述 Linux下的C语言程序问题无限循环 这个程序我在Linux里用gcc编译,然后无限循环,我用ctrl+c但是只能停止循环,却不能退出运行,这是一个问题,还有一个就是为什么它会无限循环?我把for里面中间一个x!=9.9改成x<=9.9还是无限循环,为什么? 解决方案 杂记之C语言之无限循环 解决方案二: 改成<=9.9就不会出现这个情况的, 解决方案三: 亲测,改为<=9.9不是无限循环,用!=是无限循环的原因很简单,float,double的!=不能这么判断,比如你判断 a