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 }