C语言与sqlserver数据库

C语言与sqlserver数据库,第1张

概述1.使用C语言来 *** 作SQL SERVER数据库,采用ODBC开放式数据库连接进行数据的添加,修改,删除,查询等 *** 作。  step1:启动SQLSERVER服务,例如:HNHJ,开始菜单 ->运行 ->net start mssqlserver  step2:打开企业管理器,建立数据库test,在test库中建立test表(a varchar(200),b varchar(200))  step3:

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##########################

C代码

#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,&a,&p);            sqlBindParameter(hstmt1,2,&b,&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);       }     
#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,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,37);				//第二种方式		//绑定参数方式		char a[200]="bbb";		char b[200]="200";		sqlINTEGER   p   =   sql_NTS;		//1预编译		sqlPrepare(hstmt1,29); //第三个参数与数组大小相同,而不是数据库列相同		//2绑定参数值		sqlBindParameter(hstmt1,&p);		sqlBindParameter(hstmt1,&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##########################

C代码

#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",                   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,                         sql_IS_INTEGER);            retcode   =   sqlAllocHandle(sql_HANDLE_DBC,   &hdbc1);           //1.连接数据源        retcode   =   sqlConnect(hdbc1,   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,   &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,&p);           //3.执行           sqlExecute(hstmt1);           char List[5];           sqlBindCol(hstmt1,List);           */              //第三种方式全部输出            /*           1.确认一个结果集是否可用。           2.将结果集的列绑定在适当的变量上。           3.取得行           */           //3.检查结果记录(如果有的话)            sqlExecDirect (hstmt1,sql3,19);            char List[5];            sqlBindCol(hstmt1, 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, henv);           return(0);       }    
#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数据库,2.直接查询全部*/int main(){   	RETCODE retcode;   	UCHAR   szDSN[sql_MAX_DSN_LENGTH+1]   =   "csql",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,sql_IS_INTEGER);    	retcode   =   sqlAllocHandle(sql_HANDLE_DBC,&hdbc1);   	//1.连接数据源	retcode   =   sqlConnect(hdbc1,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,&hstmt1);   		//第一种方式		/*		//直接执行		sqlExecDirect (hstmt1,39);		char List[5];		sqlBindCol(hstmt1,List,5,0);		sqlFetch(hstmt1);		printf("%s/n",List);		*/				//第二种方式		/*		//绑定参数方式		char a[200]="aaa";		sqlINTEGER   p   =   sql_NTS;		//1.预编译		sqlPrepare(hstmt1,35); //第三个参数与数组大小相同,而不是数据库列相同		//2.绑定参数值		sqlBindParameter(hstmt1,&p);		//3.执行		sqlExecute(hstmt1);		char List[5];		sqlBindCol(hstmt1,List);		*/		//第三种方式全部输出		/*		1.确认一个结果集是否可用。		2.将结果集的列绑定在适当的变量上。		3.取得行		*/		//3.检查结果记录(如果有的话)		sqlExecDirect (hstmt1,19);		char List[5];		sqlBindCol(hstmt1,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,henv);   	return(0);   }  

 

3.总结:ODBC数据库 *** 作与JDBC步骤上类似,可以融汇贯通来学习

本文来自于http://simpledev.javaeye.com/blog/339537

总结

以上是内存溢出为你收集整理的C语言与sqlserver数据库全部内容,希望文章能够帮你解决C语言与sqlserver数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1182121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存