1.使用C语言来操作SQL SERVER数据库,采用ODBC开放式数据库连接进行数据的添加,修改,删除,查询等操作。
step1:启动SQLSERVER服务,例如:HNHJ,开始菜单 ->运行 ->net start mssqlserver
step2:打开企业管理器,建立数据库test,在test库中建立test表(a varchar(200),b varchar(200))
step3:建立系统DSN,开始菜单 ->运行 ->odbcad32,
添加->SQL SERVER
名称:csql,服务器:HNHJ
使用用户使用登录ID和密码的SQLSERVER验证,登录ID:sa,密码:
更改默认的数据库为:test
...
测试数据源,测试成功,即DNS添加成功。
2.cpp文件完整代码
//##########################save.cpp##########################
#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(){
RETCODE retcode;
UCHAR szDSN[SQL_MAX_DSN_LENGTH+1] = "csql",
szUID[MAXNAME] = "sa",
szAuthStr[MAXNAME] = "";
//SQL语句
//直接SQL语句
UCHAR sql[37] = "insert into test values('aaa','100')";
//预编译SQL语句
UCHAR pre_sql[29] = "insert into test values(?,?)";
//1.连接数据源
//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, &hdbc1);
retcode = SQLConnect(hdbc1, szDSN, 4, szUID, 2, szAuthStr, 0);
//判断连接是否成功
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);
//第二种方式
//绑定参数方式
char a[200]="bbb";
char b[200]="200";
SQLINTEGER 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);
return(0);
}
//##########################list.cpp##########################
#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;
/*
查询SQLSERVER数据库,1.条件查询,2.直接查询全部
*/
int main(){
RETCODE retcode;
UCHAR szDSN[SQL_MAX_DSN_LENGTH+1] = "csql",
szUID[MAXNAME] = "sa",
szAuthStr[MAXNAME] = "";
UCHAR sql1[39] = "select b from test where a = 'aaa'";
UCHAR sql2[35] = "select b from test where a = ? ";
UCHAR sql3[19] = "select b from test";
retcode = SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv);
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,
(SQLPOINTER)SQL_OV_ODBC3,
SQL_IS_INTEGER);
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);
//1.连接数据源
retcode = SQLConnect(hdbc1, szDSN, 4, szUID, 2, szAuthStr, 0);
if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) ) {
printf("连接失败!");
} else {
//2.创建并执行一条或多条SQL语句
/*
1.分配一个语句句柄(statement handle)
2.创建SQL语句
3.执行语句
4.销毁语句
*/
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);
//第一种方式
/*
//直接执行
SQLExecDirect (hstmt1,sql1,39);
char list[5];
SQLBindCol(hstmt1, 1, SQL_C_CHAR, list, 5, 0);
SQLFetch(hstmt1);
printf("%s\n",list);
*/
//第二种方式
/*
//绑定参数方式
char a[200]="aaa";
SQLINTEGER p = SQL_NTS;
//1.预编译
SQLPrepare(hstmt1,sql2,35); //第三个参数与数组大小相同,而不是数据库列相同
//2.绑定参数值
SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p);
//3.执行
SQLExecute(hstmt1);
char list[5];
SQLBindCol(hstmt1, 1, SQL_C_CHAR, list, 5, 0);
SQLFetch(hstmt1);
printf("%s\n",list);
*/
//第三种方式全部输出
/*
1.确认一个结果集是否可用。
2.将结果集的列绑定在适当的变量上。
3.取得行
*/
//3.检查结果记录(如果有的话)
SQLExecDirect (hstmt1,sql3,19);
char list[5];
SQLBindCol(hstmt1, 1, SQL_C_CHAR, list, 5, 0);
do{
retcode = SQLFetch(hstmt1);
if(retcode == SQL_NO_DATA){
break;
}
printf("%s\n",list);
}while(1);
//释放语句句柄
SQLCloseCursor (hstmt1);
SQLFreeHandle (SQL_HANDLE_STMT, hstmt1);
}
//4.断开数据源
/*
1.断开与数据源的连接.
2.释放连接句柄.
3.释放环境句柄 (如果不再需要在这个环境中作更多连接)
*/
SQLDisconnect(hdbc1);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return(0);
}
3.总结:ODBC数据库操作与JDBC步骤上类似,可以融汇贯通来学习。
分享到:
相关推荐
在这个系统中,C语言作为主要的编程工具,用于实现用户交互界面、业务逻辑处理以及与数据库的通信,而SQL SERVER数据库则负责存储和管理图书数据。 1. C语言:C语言是一种强大的、低级的编程语言,广泛应用于系统...
本文将详细解释使用C语言连接SQL Server数据库的方法,包括连接数据库、查询数据、更新数据等操作的实现细节。 一、连接数据库 在连接SQL Server数据库之前,需要包含必要的头文件,包括`<stdio.h>`、`<stdlib.h>`...
### 如何使用C语言连接SQL数据库 在计算机编程领域中,使用C语言连接SQL数据库是一项基本而重要的技能,尤其对于初级和中级学习者而言。本文将详细介绍如何利用C语言进行数据库连接与简单查询操作,帮助读者更好地...
综上所述,通过本文档的详细指导,读者应该能够理解并掌握如何使用C语言连接SQL Server数据库,并且能够对遇到的问题进行有效的处理。这一技能对于需要在C语言环境下进行数据库编程的开发人员来说尤为宝贵。掌握好...
在实现阶段,C语言通过ODBC(Open Database Connectivity)或ADO.NET等接口与SQL SERVER数据库进行通信。ODBC提供了一种标准的方式,让C程序可以连接到不同的数据库系统。开发者需要编写SQL查询语句,通过API调用来...
《C语言和SQL Server数据库技术基础》是一门针对高职软件技术专业的核心课程,旨在培养学生掌握C#编程语言和SQL Server数据库的基础知识与实际操作技能。课程涵盖了C#的基础语法、数据库概念、SQL查询语言以及使用...
在本文中,我们将深入探讨如何使用C语言与SQL Server 2012进行交互,并结合Navicat和ODBC配置...通过Navicat和ODBC,我们可以方便地管理和操作SQL Server数据库,而C++提供了一种低级别、高效的编程方式来执行SQL命令。
_bstr_t strConnect = "Driver={sqlserver};server=127.0.0.1,1433;uid=sa;pwd=hello38;database=student;"; sqlSp->Open(strConnect, "", "", adModeUnknown); cout 连接成功!" ; ``` ### 5. 创建 `_RecordsetPtr`...
c语言连接sql server数据库,基本操作。连接,执行,断开。
本文档讲解了使用C语言连接SQL Server数据库的示例代码,介绍了嵌入式SQL语句的应用程序,包括连接数据库、查询数据、断开连接等操作。同时,文档还提供了使用ODBC连接SQL Server数据库的步骤和C语言代码示例。 一...
在本文中,我们将深入探讨如何使用Visual Studio 2019通过ODBC(Open Database Connectivity)接口连接到SQL Server数据库,以及在这个过程中涉及到的关键技术点。Visual Studio是Microsoft开发的一款强大的集成开发...
本文将深入探讨使用C语言进行学生学籍管理系统的设计,以及如何结合数据库和SQL来实现数据的存储与操作。 首先,C语言程序设计涉及到语法、控制结构、函数、指针等多个核心概念。在构建学生学籍管理系统时,我们...
在本文中,我们将探讨如何使用C语言连接到SQL Server 2008数据库,以及在这个过程中涉及的...通过掌握这些知识点,你可以编写C语言程序,实现与SQL Server的交互,执行CRUD(创建、读取、更新、删除)等数据库操作。
本文还给出了一个嵌入式SQL编程的实例,演示了如何使用C语言与SQL Server的嵌入式SQL编程技术来实现数据库应用程序的开发。 本文详细论述了C语言与SQL Server的嵌入式SQL编程技术,提供了一种解决方案来实现复杂...
总结来说,基于C语言与SQL Server 2000的嵌入式SQL编程技术,开发者可以构建更强大的数据库应用程序,利用C语言的流程控制能力和SQL Server 2000的强大查询功能,实现高效的数据操作和处理。通过预编译和通信区机制...
本文将详细讲解如何利用C语言连接并操作SQL Server数据库,以便实现数据的增删改查功能。 首先,我们需要搭建一个开发环境。这里推荐使用Visual Studio 2008集成开发环境,同时安装SQL Server 2008。确保SQL Server...
提到SQL Server数据库技术,它在当前的应用程序中非常普遍,尤其在处理图像、视频和声音等大数据块时,这类数据被称为二进制大对象(BLOB)。由于BLOB的数据量通常很大,它们不会存储在数据记录页中,而是存储在一组...
以上是基于C语言与SQL Server 2000的嵌入式SQL编程的关键技术点,理解和掌握这些内容有助于开发高效、可靠的数据库应用程序。在实际项目中,参考相关的专业指导和参考文献,可以进一步提升编程能力。