提前认识软件开拓(20) 如安在C语言内里执行SQL语句
当前位置:以往代写 > C/C++ 教程 >提前认识软件开拓(20) 如安在C语言内里执行SQL语句
2019-06-13

提前认识软件开拓(20) 如安在C语言内里执行SQL语句

提前认识软件开拓(20) 如安在C语言内里执行SQL语句

副标题#e#

在通信类软件中,措施常常需要与数据库打交道。为了实现诸如从数据库中获取数据、更新数据库表某字段、插入或删除某条数据等成果,就需要在C语言措施中结构一些SQL语句,并用函数来执行这些SQL语句。

本文先容如安在C语言措施中结构并执行SQL语句,为相关软件开拓事情的开展提供了参考。

一、为什么要在C语言措施中执行SQL语句?

在C语言措施中执行SQL语句的原因有以下几个:

(1) 措施需要获取数据库中某数据表的字段值,并对这些字段值举办理会以执行后续操纵。

(2) 措施需要更新数据库中某数据表的字段值。

(3) 措施需要向某数据表中插入值。

(4) 措施需要从某数据表中删除一些值。

(5) 措施需要执行某存储进程以完成特定的操纵。

可以看出,在C语言措施中,不但要求可以或许执行“select”、“update”、“insert”、“delete”等语句,还要求可以或许执行存储进程。

二、C语言措施与数据库打交道的方法

C语言措施与数据库打交道的方法分为直连(同步)和非直连(异步)两种,它们的特点如下所示:

1. 直连方法

在该方法中,C语言措施直接与数据库进动作静的交互,如图1所示。

提前认识软件开辟(20) 如何在C语言里面执行SQL语句

图1 直连方法示意图

该方法的利益是动静交互是即时的,C语言措施向数据库发送动静之后,很快就可以或许获得功效;缺点是假如数据库执行迟钝,那么C语言措施需要挂在哪里期待功效,影响了措施执行效率。

2. 非直连方法

在该方法中,C语言措施通过一个独立的第三方模块间接与数据库进动作静的交互,如图2所示。

提前认识软件开辟(20) 如何在C语言里面执行SQL语句

图2 非直连方法示意图

该方法的利益是当C语言措施向第三方模块发送动静之后,可以不消期待数据库返回功效而去执行其它流程;缺点是假如动静序列号没有界说好,那么极有大概会导致第三方模块返回的功效呈现杂乱。因此,在该方法中,界说好发送动静的顺序(即设定好序列号)很重要。

由于需要与数据库打交道,因此要在C语言措施所利用的设置文件中填写好关联数据库的相关信息,如数据库呆板的IP地点、端标语、用户名、暗码、模块号和所操纵的详细数据库名等。在运行措施之前,必然要确保相关设置项信息的正确性。

本文先容直连方法下C语言措施与数据库进动作静交互的详细流程。

三、直连方法下的动静交互流程

在直连方法下,C语言措施与数据库进动作静交互的通用流程如图3所示。

提前认识软件开辟(20) 如何在C语言里面执行SQL语句

图3 直连方法下的动静交互流程图


#p#副标题#e#

从图3可以看出,直连方法下C语言措施与数据库进动作静交互的流程一般包罗以下几个步调:

(1) 获取对应的数据库毗连,在毗连失败的环境下举办重试。要执行SQL语句,首先需要毗连到对应的数据库,即获取对应的数据库毗连句柄。在第一次毗连失败的环境下,要举办重连。每个项目组划定了数据库重连的次数,一般为二到三次。假如多次重连之后仍然不乐成,那么措施就直接返回错误,不再执行后续流程。这时就需要查找毗连失败的原因。

(2) 在毗连乐成之后,就要结构特定的SQL语句并挪用函数执行该SQL语句。这些SQL语句不只包罗“select”、“update”、“insert”、“delete”等语句,还包罗执行存储进程的语句。假如执行乐成,则继承执行后续流程;假如执行失败,则封锁对应的数据库毗连并退出措施。因为之前毗连数据库是乐成的,所以本步执行失败,就需要查察是否是SQL语句结构得有问题。

(3) SQL语句执行乐成之后,假如该SQL语句有返回功效,就需要挪用函数来获取该功效,同时对功效举办理会;假如该SQL语句没有返回功效,那么就直接执行后续流程。假如获取息争析功效失败,则封锁对应的数据库毗连并退出措施;假如理会乐成,那么就继承执行后续流程。

(4) 留意,假如一个措施内里建设过数据库毗连,在该措施执行竣事或退出之前,必然要记得将数据库毗连封锁掉,防备数据库毗连句柄被错误利用。

四、直连方法下的C语言措施框架

按照图3的动静交互流程,直连方法下的C语言措施框架如下所示:

……
    
……
    
// 获取对应的数据库毗连
    
if (hDbConn == NULL)                // hDbConn为数据库句柄
    
{
    
    hDbConn = GetDBConn(…);        // 第一次毗连
    
    if (hDbConn == NULL)            // 毗连失败,再重试一次
    
    {
    
        hDbConn = GetDBConn(…);    // 第二次毗连
    
        if (hDbConn == NULL) // 第二次毗连失败,措施直接返回,不执行后续流程
    
        {
    
            return;
    
        }
    
    }
    
}
    
     
    
// 结构特定的SQL语句并挪用函数执行该SQL语句
    
……
    
……
    
iRetValue = ExecuteSql(hDbConn, szSQL, …);  // szSQL内里存放特定的SQL语句
    
if (iRetValue == -1)            // 返回值为-1暗示执行失败
    
{
    
    if (hDbConn != NULL)     // 数据库毗连句柄不为空
    
    {
    
        CloseDb(hDbConn);   // 封锁数据库毗连
    
        hDbConn = NULL;    // 留意,要把hDbConn指针置为空
    
    }
    
    return;                   // 执行失败后直接返回
    
}
    
     
    
// 假如该SQL语句有返回值,就需要获取该功效;无返回值则不需要执行以下流程
    
iRetValue = Fetch(hDbConn, szDBBuf, sizeof(szDBBuf)); // 将返回功效放到szDBBuf中
    
if (iRetValue == -1)           // 返回值为-1暗示执行失败
    
{
    
    if (hDbConn != NULL)    // 数据库毗连句柄不为空
    
    {
    
        CloseDb(hDbConn);  // 封锁数据库毗连
    
        hDbConn = NULL;   // 留意,要把hDbConn指针置为空
    
    }
    
    return;                  // 执行失败后直接返回
    
}
    
     
    
// 继承执行后续流程
    
……
    
……
    
// 在措施返回之前要再次查抄并封锁数据库句柄
    
if (NULL != hDbConn)
    
{
    
    CloseDb(hDbConn);
    
    hDbConn = NULL;
    
}
    
     
    
return;

五、总结

本文对直连方法下C语言措施如何与数据库进动作静交互作了具体的先容,并团结流程图展示了直连方法下的C语言措施框架。

在C语言措施与数据库打交道的进程中,我们要留意以下问题:

(1) 获取数据库毗连句柄之后,在利用它之前要首先查抄该句柄指针是否为空;假如为空,则要对数据库举办重连。

#p#分页标题#e#

(2) 在执行SQL语句的进程中,假如碰着异常功效,可从两个方面入手来查抄:第一,查抄设置文件中数据库的各项设置是否正确,数据库自己是否运行精采;第二,查抄C措施代码是否书写正确,出格是SQL语句是否书写正确。

(3) 不管在代码的什么位置,在措施退出之前,必然要释放数据库毗连的句柄,以免其被误用。

在实际的软件开拓项目中,C语言措施和数据库打交道可谓是屡见不鲜。本文先容了C语言措施与数据库交互的详细流程,为相关软件开拓事情的顺利开展提供了有益的参考。

From:csdn博客 周兆熊

    关键字:

在线提交作业