C语言异常处理和连接数据库

 1 #include <stdio.h>
 2 #include <setjmp.h>
 3 
 4 jmp_buf j;
 5 
 6 void Exception(void);
 7 double diva(double num1,double num2);
 8 
 9 int main()
10 {
11     double a = 0, b = 0, result = 0;
12 
13 
14     printf("请输入第一个数字:");
15 
16     scanf("%lf",&a);
17 
18     printf("请输入第二个数字:");
19 
20 
21     if(setjmp(j) == 0)
22     {
23         scanf("%lf",&b);
24 
25         if(0 == b)
26         {
27             Exception();
28         }
29         result = diva(a, b);
30 
31         printf("相除的结果是: %.2lf
",result);
32     }
33     else
34     {
35         printf("试图除以一个为0的数字
");
36     }
37     system("pause");
38     return 0;
39 }
40 
41 
42 void Exception(void)
43 {
44     longjmp(j, 1);
45 }
46 double diva(double num1,double num2)         //两数相除函数
47 {
48     double re;
49 
50     re=num1/num2;
51 
52     return re;
53 }

  C语言通过ODBC连接SQLSERVER数据库操作

 1 /*****************************************************
 2 Function:
 3 Description:              
 4 Input: 
 5 Return: 
 6 Author:
 7 Date:
 8 *****************************************************/
 9 
10 #include <stdio.h>   
11 #include <stdlib.h>
12 #include <Windows.h>
13 #include <sql.h>               // 包含有基本的ODBC API的定义
14 #include <sqlext.h>            // 包含有扩展的ODBC的定义
15 #include <sqltypes.h>
16 #include <time.h>
17 
18 
19 int main()
20 {
21     void  *hdbc1 = NULL;  //语句句柄
22     HENV  henv = NULL;
23     clock_t start_time = 0, end_time = 0;
24     double time = 0; 
25 
26     /////////////////////////////////////////////////////////////
27     ////////注意:所有未释放动态申请内存在初始化参数后释放///////
28     /////////////////////////////////////////////////////////////
29 
30     // 用户名和密码
31     RETCODE   retcode; 
32     char szDSN[] = "John";   //必须是一个合法的DSN Name,数据源名
33     char szUID[] = "sa";           //用户名   
34     char szAuthStr[] = "1234";     //用户密码   
35 
36 
37     //申请环境句柄和连接句柄
38     while(1)
39     {
40         //申请环境句柄
41         start_time = clock();
42 
43         /* 此函数组合了函数 SQLAllocEnv()、SQLAllocConnect() 和 SQLAllocStmt()*/
44         retcode  = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv); 
45         
46         /*创建环境句柄后务必要调用这个函数*/
47         retcode  = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, 
48             (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);  
49 
50         /*申请数据库连接句柄*/
51         retcode  =  SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1); 
52         
53         /*连接ODBC数据源,并返回连接句柄*/
54         retcode = SQLConnect(hdbc1, (SQLCHAR *)szDSN,(SWORD)strlen(szDSN),(SQLCHAR *)szUID, 
55             (SWORD)strlen(szUID),(SQLCHAR *)szAuthStr,(SWORD)strlen(szAuthStr));  
56 
57         if((retcode != SQL_SUCCESS)&&(retcode != SQL_SUCCESS_WITH_INFO))  
58         {
59             printf("Connection   Error
");   
60         }
61         else  
62         {
63             printf("Connection   Successfully
"); 
64 
65         }
66         SQLDisconnect(hdbc1);                   /* 断开连接ODBC数据源*/
67         SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);  /*释放语句句柄*/
68         SQLFreeHandle(SQL_HANDLE_ENV, henv);   /*释放环境句柄*/
69 
70         end_time = clock();
71         time = (double)(end_time-start_time)/CLOCKS_PER_SEC;
72         printf("总共耗时%.2f s
", time);
73 
74     }
75 
76     system("pause");
77     return 0;
78 }
原文地址:https://www.cnblogs.com/hdu-2010/p/3219687.html