实例演示:C语言在SQL数据库中的增删改查 (sql数据库c 增删改查案例)

近年来随着信息技术的快速发展,数据成为了企业的核心资源之一,而数据库管理系统(DBMS)便成为企业中管理数据最常用的方式。常见的DBMS有MySQL、Oracle、SQL Server等,其中SQL Server是微软公司推出的一种关系型数据库管理系统,具有高效稳定、易操作等特点,被广泛应用于企业中。而在C语言开发中,与SQL Server协作,能够方便地访问和查询数据库,实现数据的快速获取和处理。本文将介绍C语言在SQL数据库中实例演示的增删改查操作。

一、连接SQL Server数据库

C语言操作SQL Server,需要借助ODBC(Open Database Connectivity,开放式数据库互连)技术,ODBC提供了一套应用程序接口(API),用于访问各种数据库。需要先安装ODBC驱动程序才能连接SQL Server数据库。接下来,我们将通过C语言进行连接SQL Server数据库。

1.1 配置ODBC数据源

我们需要在系统中配置ODBC数据源,以便C语言程序能够连接数据库。具体操作如下:

a.在控制面板中找到“管理员工具”;

b.双击打开“ODBC数据源(32位)”;

c.在弹出的窗口中,选择“系统DSN”标签页,并点击下方的“添加”按钮;

d.选择“SQL Server Native Client 11.0”(驱动名根据实际安装的驱动程序而定),在“名称”中输入DSN名称,然后在“服务器”中输入服务器地址,最后点击“下一步”;

e.选择“使用SQL Server身份验证”,在“登录ID”和“密码”中输入登录SQL Server的用户名和密码,然后取消“默认的数据库”选项卡,最后点击“完成”。

至此,ODBC数据源的配置已经完成,在C语言中可通过这个配置完成连接SQL Server。

1.2 连接数据库

在C语言中连接数据库的方法,常常是引用ODBC的API。具体连接方法代码如下:

#include “stdio.h”

#include “sql.h”

#include “sqlext.h”

int mn()

{

SQLHENV henv= NULL;

SQLHDBC hdbc= NULL;

SQLRETURN ret;

//分配空间,准备连接

ret= SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

ret= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

ret= SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

//配置连接参数

ret= SQLConnect(hdbc, (SQLCHAR*)”ODBCName”, SQL_NTS,

(SQLCHAR*)”userName”, SQL_NTS,

(SQLCHAR*)”password”, SQL_NTS);

if (!SQL_SUCCEEDED(ret))

{

printf(“连接失败!\n”);

}

else

{

printf(“连接成功!\n”);

//退出连接

SQLDisconnect(hdbc);

}

//释放刚刚分配的空间

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

return 0;

}

通过以上程序,我们可以看到连接成功时,控制台中将输出“连接成功!”的提示信息。可以看到,SQL Server数据库已经成功连接。

二、SQL Server数据库中数据的增删改查

在C语言中,通过ODBC API可以方便地查询SQL Server数据库中的数据,执行增删改查操作十分容易。接下来,我们将分别介绍SQL Server数据库中数据的增删改查。

2.1 数据的插入

通过编写相应的C语言程序,可以轻松地对SQL Server表进行数据的插入。具体代码实现如下:

#include “stdio.h”

#include “sql.h”

#include “sqlext.h”

int mn()

{

SQLHENV henv= NULL;

SQLHDBC hdbc= NULL;

SQLRETURN ret;

SQLHSTMT hstmt;

//分配空间,准备连接

ret= SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

ret= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

ret= SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

//连接数据库

ret= SQLConnect(hdbc, (SQLCHAR*)”ODBCName”, SQL_NTS,

(SQLCHAR*)”userName”, SQL_NTS,

(SQLCHAR*)”password”, SQL_NTS);

//定义SQL语句

char sql[1024];

sprintf(sql, “INSERT INTO UserInfo (userName, password) VALUES (‘tom’, ‘123456’)”);

//执行SQL语句

SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if (!SQL_SUCCEEDED(SQLPrepare(hstmt, (SQLCHAR*)sql, SQL_NTS)))

{

printf(“预处理失败!\n”);

}

else if (!SQL_SUCCEEDED(SQLExecute(hstmt)))

{

printf(“执行失败!\n”);

}

else

{

printf(“执行成功!\n”);

}

//释放句柄空间

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

//关闭数据库连接

SQLDisconnect(hdbc);

//释放刚刚分配的句柄

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

return 0;

}

在以上代码中,我们需要拼接SQL语句,以实现向表中插入数据。通过定义SQL语句,执行SQLPrepare预处理函数,再通过SQLExecute函数将SQL语句执行,就可以将数据成功插入到SQL Server表中。

2.2 数据的删除

实现数据删除的方法与插入基本相同。同样的,我们需要拼接SQL语句,通过预处理函数和执行函数实现将数据从数据库中删除。下面是相应的C语言程序代码:

#include “stdio.h”

#include “sql.h”

#include “sqlext.h”

int mn()

{

SQLHENV henv= NULL;

SQLHDBC hdbc= NULL;

SQLRETURN ret;

SQLHSTMT hstmt;

//分配空间,准备连接

ret= SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

ret= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

ret= SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

//连接数据库

ret= SQLConnect(hdbc, (SQLCHAR*)”ODBCName”, SQL_NTS,

(SQLCHAR*)”userName”, SQL_NTS,

(SQLCHAR*)”password”, SQL_NTS);

//定义SQL语句

char sql[1024];

sprintf(sql, “DELETE FROM Table1 WHERE ID = %d”, 5);

//执行SQL语句

SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if (!SQL_SUCCEEDED(SQLPrepare(hstmt, (SQLCHAR*)sql, SQL_NTS)))

{

printf(“预处理失败!\n”);

}

else if (!SQL_SUCCEEDED(SQLExecute(hstmt)))

{

printf(“执行失败!\n”);

}

else

{

printf(“执行成功!\n”);

}

//释放句柄空间

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

//关闭数据库连接

SQLDisconnect(hdbc);

//释放刚刚分配的句柄

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

return 0;

}

2.3 数据的修改

修改数据库表中的数据与增删相同,也需要通过执行SQL语句完成。这里也是通过预处理函数和执行函数实现,同时需要对应修改相应的SQL语句。下面是相应的程序代码:

#include “stdio.h”

#include “sql.h”

#include “sqlext.h”

int mn()

{

SQLHENV henv= NULL;

SQLHDBC hdbc= NULL;

SQLRETURN ret;

SQLHSTMT hstmt;

//分配空间,准备连接

ret= SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

ret= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

ret= SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

//连接数据库

ret= SQLConnect(hdbc, (SQLCHAR*)”ODBCName”, SQL_NTS,

(SQLCHAR*)”userName”, SQL_NTS,

(SQLCHAR*)”password”, SQL_NTS);

//定义SQL语句

char sql[1024];

sprintf(sql, “UPDATE MyTable SET Age = %d WHERE ID = %d”, 28, 1);

//执行SQL语句

SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if (!SQL_SUCCEEDED(SQLPrepare(hstmt, (SQLCHAR*)sql, SQL_NTS)))

{

printf(“预处理失败!\n”);

}

else if (!SQL_SUCCEEDED(SQLExecute(hstmt)))

{

printf(“执行失败!\n”);

}

else

{

printf(“执行成功!\n”);

}

//释放句柄空间

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

//关闭数据库连接

SQLDisconnect(hdbc);

//释放刚刚分配的句柄

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

return 0;

}

2.4 数据的查询

C语言通过ODBC API实现查询SQL Server数据库的数据,同样需要拼接SQL语句,通过预处理函数和执行函数实现查询。下面是相应的程序代码:

#include “stdio.h”

#include “sql.h”

#include “sqlext.h”

int mn()

{

SQLHENV henv= NULL;

SQLHDBC hdbc= NULL;

SQLRETURN ret;

SQLHSTMT hstmt;

SQLCHAR userName[1024];

SQLCHAR password[1024];

//分配空间,准备连接

ret= SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

ret= SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

ret= SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

//连接数据库

ret= SQLConnect(hdbc, (SQLCHAR*)”ODBCName”, SQL_NTS,

(SQLCHAR*)”userName”, SQL_NTS,

(SQLCHAR*)”password”, SQL_NTS);

//定义SQL语句

char sql[1024];

sprintf(sql, “SELECT * FROM UserInfo”);

//执行SQL语句

SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

if (!SQL_SUCCEEDED(SQLPrepare(hstmt, (SQLCHAR*)sql, SQL_NTS)))

{

printf(“预处理失败!\n”);

}

else if (!SQL_SUCCEEDED(SQLExecute(hstmt)))

{

printf(“执行失败!\n”);

}

else

{

//获取每条记录中字段的值

while (SQL_SUCCEEDED(SQLFetch(hstmt)))

{

SQLGetData(hstmt, 1, SQL_C_CHAR, userName, 1024, NULL);

SQLGetData(hstmt, 2, SQL_C_CHAR, password, 1024, NULL);

printf(“用户名:%s\t密码:%s\n”, userName, password);

}

}

//释放句柄空间

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

//关闭数据库连接

SQLDisconnect(hdbc);

//释放刚刚分配的句柄

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

return 0;

}

通过以上程序,我们可以查询SQL Server表中的数据,并将结果输出到控制台。

通过本文的介绍,我们了解了通过C语言操作SQL Server数据库的实例操作。在进行数据库操作时,需要先连接数据库,然后通过拼接SQL语句,通过预处理函数和执行函数实现数据的增删改查等操作。通过这些坚实的基础,能更加高效地管理公司中的数据资源。


数据运维技术 » 实例演示:C语言在SQL数据库中的增删改查 (sql数据库c 增删改查案例)