使用C语言连接 ms sql server 2008

ODBC连接分为两个步骤:

1.配置本地ODBC环境

2.代码.

一.配置本地ODBC环境

1.启动 sql server 服务.

运行->net start mssqlserver

2.更该sql的登录方式为混合登录

步骤:(1)打开sql 2008,使用windows身份进入->右键点击->属性->安全性->选择混合身份验证

(2)确定后选择数据库下面的安全性->登录名->sa->修改密码->重新启动

3.新建一张表

数据库名字取名为 Test ,新建一张City表

4.建立系统DSN,开始->运行->odbcad32->SQL Server

服务器名为电脑名称:右键点击我的电脑->属性->可查看计算机全名->更改设置->复制计算机全名

点击完成->测试数据源->测试成功即可.

二.代码部分

#include <stdio.h>#include <stdlib.h>//需要的头文件#include <windows.h>#include <sql.h>#include <sqlext.h>#include <sqltypes.h>#include <odbcss.h>void Insert_City();void Select_all();SQLHENV henv;SQLHDBC hdbc;SQLHSTMT hstmt;SQLRETURN retcode;int main(){SQLCHAR szDSN[SQL_MAX_DSN_LENGTH+1]="Test";SQLCHAR szUID[MAXNAME]="sa";SQLCHAR szAuthStr[MAXNAME]="123";SQLRETURN retcode;//1.环境句柄retcode=SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);retcode=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);//2.连接句柄retcode=SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);retcode=SQLConnect(hdbc,szDSN,strlen("Test"),szUID,strlen("sa"),szAuthStr,strlen("123"));if(retcode != SQL_SUCCESS && retcode!=SQL_SUCCESS_WITH_INFO){printf("连接失败!\n");}else{printf("连接成功!\n");Insert_City();system("pause");Select_all();}//释放数据源SQLDisconnect(hdbc);SQLFreeHandle(SQL_HANDLE_DBC,hdbc);SQLFreeHandle(SQL_HANDLE_ENV,henv);return 0;}void Insert_City(){printf("\n插入城市信息…\n");SQLCHAR sql[48]="insert into city values(‘NanChang’,’100′,’105′)";SQLCHAR pre_sql[32]="insert into City values(?,?,?)";char ci[MAXNAME],lo[MAXNAME],la[MAXNAME];//连接retcode=SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);SQLINTEGER p1=SQL_NTS,p2=SQL_NTS,p3=SQL_NTS;printf("请输入城市名称:");gets(ci);printf("请输入经度:");gets(lo);printf("请输入纬度:");gets(la);//预执行SQLPrepare(hstmt,pre_sql,31);//绑定参数retcode=SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,MAXNAME,0,&ci,0,&p1);retcode=SQLBindParameter(hstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,MAXNAME,0,&lo,0,&p2);retcode=SQLBindParameter(hstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,MAXNAME,0,&la,0,&p3);//直接执行retcode=SQLExecute(hstmt);if(retcode!=SQL_SUCCESS && retcode!=SQL_SUCCESS_WITH_INFO)printf("操作失败!\n");else printf("操作成功!\n");//释放SQLCloseCursor(hstmt);SQLFreeHandle(SQL_HANDLE_STMT,hstmt);}void Select_all(){char ci[50]="",lo[50]="",la[50]="";char *sql="select * from City";//连接retcode = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);//执行SQLExecDirect(hstmt,(SQLCHAR*)sql,strlen(sql));//绑定参数SQLBindCol(hstmt,1,SQL_C_CHAR,ci,10,0);SQLBindCol(hstmt,2,SQL_C_CHAR,lo,11,0);SQLBindCol(hstmt,3,SQL_C_CHAR,la,11,0);do{//移动retcode=SQLFetch(hstmt);if(retcode == SQL_NO_DATA)break;printf("%s %s %s\n",ci,lo,la);}while(1);}

亲测可用!

由于图片上传不了,发到空间里

,只知道心痛得滴血,都只为你。

使用C语言连接 ms sql server 2008

相关文章:

你感兴趣的文章:

标签云: