使用C语言连接 ms sql server 2008 —— ODBC 编程

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);

}

亲测可用!

时间: 2024-11-06 11:45:18

使用C语言连接 ms sql server 2008 —— ODBC 编程的相关文章

ArcSDE 10.1安装、配置、连接 (SQL Server 2008)

转自:http://blog.csdn.net/esrichinacd/article/details/8510224 1  概述 ArcSDE 10.1的安装配置相较于ArcSDE 10.0和之前版本,有了一些显著的变化,比如取消了Post Install向导,很多之前的管理操作改为使用地理处理工具来执行.很多用户初次接触很不适应,本文就为大家介绍如何安装.配置和连接ArcSDE 10.1,测试数据库选择的是Microsoft SQL Server 2008 R2 Enterprise Edi

设定MS SQL Server 2008定期自动备份

1.说明 SQL Server2008 本身具有定期自动备份功能,我们只需要通过简单的配置就可以实现非常简单高效的自动备份功能. 2.打开SQL Server代理服务 要实现自动备份功能,首先要保证SQL Server的"SQL Server(代理)"服务已经打开. 如果没有看到这个"SQL Server代理"节点,可通过如下方式打开 先找到开始菜单中的"Microsoft SQL Server 2008 R2",再在"配置工具&quo

MS SQL Server 2008 简体中文正式版下载地址(附序列号)

Microsoft® SQL Server® 2008 Enterprise Evaluation:开发人员试用体验 http://www.microsoft.com/downloads/details.aspx?FamilyId=6B10C7C1-4F97-42C4-9362-58D4D088CD38&displaylang=zh-cn Microsoft® SQL Server® 2008 Enterprise Evaluation:IT 专业人员试用体验 http://www.micros

win 7 下配置SQl server 2008 ODBC 错误的解决办法(端口1433 不通)

win 7安装SQl server 2008 下配置ODBC总是提示类似错误: 上图提示说明可能端口有问题,网上解决办法很多,经过自己的测试筛选解决办法如下: 1. 我们知道sqlserver2008通过端口 1433 连接到主机 localhost 的所以要保证端口1433开放 2.要保证防火墙通过1433端口或者关闭防火墙 3.在运行里 telnet 127.0.0.1 1433  测试提示如下错误    说明要到控制面板\程序\打开或关闭windows功能里勾选 Telnet服务器和客户端

C#连接上sql server 2008 第一次实践

花了一早上的时间,终于连接上了我的本地数据库,我想应该记一下! 先贴个代码: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 using System.Data.SqlClient; 8 9 namespace ConsoleApplication1 10 { 11 class Prog

MS SQL Server 2008 R2 常规操作

列出当前数据库使用的所有文件 DBCC showfilestats 转移当前文件组中某个文件的数据到同文件组中的其他文件中 DBCC SHRINKFILE ('file', EMPTYFILE); 移除文件组中的某个文件 ALTER DATABASE [db] REMOVE FILE [file] 移除文件组 ALTER DATABASE [db] REMOVE FILEGROUP [FileGroup] 添加文件组 alter database [db] add filegroup Group

SQL Server 2008空间数据应用系列九:使用空间工具(Spatial Tools)导入ESRI格式地图数据

转自:http://www.cnblogs.com/beniao/archive/2011/03/22/1989310.html 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC规范.KML规范)的

实战基础技能(23)--------SQL Server 2008 无法保存表的更改

MS SQL Server 2008 在建完表后,如果要重新设计表,如修改字段长度,就会提示:“当用户在在SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成表的更改,如果强行更改会出现以下提示:不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法重新创建的标进行了更改或者启用了“阻止保存要求重新创建表的更改”选项”.如才能直接保存对表的更改?打开Microsoft SQL Server Management Studio 菜单栏 “

Eclipse IDE for Java Developers(4.10.0)建立与SQL Server 2008数据库的连接

(!各版本Eclipse和SQLSERVER的连接方法可能不同!) 一,JDBC驱动下载链接: https://www.microsoft.com/zh-cn/download/default.aspx  建议:sqljdbc42.jar (JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口