C语言连接SQL数据库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
连接到SAMPLE数据库,查询LASTNAME为JOHNSON的FIRSTNAME信息。#include
#include
#include
#include "util.h"
#include
EXEC SQL INCLUDE SQLCA; (1)
main()
{
EXEC SQL BEGIN DECLARE SECTION; (2)
char firstname[13];
char userid[9];
char passwd[19];
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO sample; (3)
EXEC SQL SELECT FIRSTNME INTO :firstname (4)
FROM employee
WHERE LASTNAME = 'JOHNSON';(4)
printf( "First name = %s\n", firstname );
EXEC SQL CONNECT RESET; (5)
return 0;
}
上面是一个简单的静态嵌入SQL语句的应用程序。它包括了嵌入SQL的主要部分:
(1)中的include SQLCA语句定义并描述了SQLCA的结构。SQLCA用于应用程序和数据库之间的通讯,其中的SQLCODE返回SQL语句执行后的结果状态。(2)在BEGIN DECLARE SECTION和END DECLARE SECTION之间定义了宿主变量。宿主变量可被SQL语句引用,也可以被C语言语句引用。它用于将程序中的数据通过SQL语句传给数据库管理器,或从数据库管理器接收查询的结果。在SQL语句中,主变量前均有“:”标志以示区别。
(3)在每次访问数据库之前必须做CONNECT操作,以连接到某一个数据库上。这时,应该保证数据库实例已经启动。
(4)是一条选择语句。它将表employee中的LASTNAME为“JOHNSON”的行数据的FIRSTNAME查出,并将它放在firstname变量中。该语句返回一个结果。可以通过游标返回多个结果。当然,也可以包含update、insert和delete语句。(5)最后断开数据库的连接。
从上例看出,每条嵌入式SQL语句都用EXEC SQL开始,表明它是一条SQL 语句。这也是告诉预编译器在EXEC SQL和“;”之间是嵌入SQL语句。如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“\”。
C语言与SQL SERVER数据库
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代码
1.#include
2.#include
3.#include
4.#include
5.#include
6.#include
7.#include
8.
9.SQLHENV henv=SQL_NULL_HENV;
10.SQLHDBC hdbc1=SQL_NULL_HDBC;
11.SQLHSTMT hstmt1=SQL_NULL_HSTMT;
12.
13./*
14.cpp文件功能说明:
15. 1.数据库操作中的添加,修改,删除,主要体现在SQL语句上
16. 2.采用直接执行方式和参数预编译执行方式两种
17.*/
18.int main(){
19.RETCODE retcode;
20.UCHAR szDSN[SQL_MAX_DSN_LENGTH+1]="csql",
21.szUID[MAXNAME]="sa",
22.szAuthStr[MAXNAME]="";
23.//SQL语句
24.//直接SQL语句
25.UCHAR sql[37]="insert into test values('aaa','100')";
26.//预编译SQL语句
27.UCHAR pre_sql[29]="insert into test values(?,?)";
28.//1.连接数据源
29.//1.环境句柄
30.retcode=SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);
31.retcode=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,
32.(SQLPOINTER)SQL_OV_ODBC3,
33.SQL_IS_INTEGER);
34.//2.连接句柄
35.retcode=SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc1);
36.retcode=SQLConnect(hdbc1,szDSN,4,szUID,2,szAuthStr,0);
37.//判断连接是否成功
38.if((retcode!=SQL_SUCCESS)&&(retcode!=SQL_SUCCESS_WITH_INF
O)){
39.printf("连接失败!\n");
40.}else{
41.//2.创建并执行一条或多条SQL语句
42./*
43. 1.分配一个语句句柄(statement handle)
44. 2.创建SQL语句
45. 3.执行语句
46. 4.销毁语句
47.*/
48.retcode=SQLAllocHandle(SQL_HANDLE_STMT,hdbc1,&hstmt1);
49.//第一种方式
50.//直接执行
51.//添加操作
52.//SQLExecDirect(hstmt1,sql,37);
53.
54.//第二种方式
55.//绑定参数方式
56.char a[200]="bbb";
57.char b[200]="200";