




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、v1.0可编辑可修改13连接到SAMPLED据库,查询 LASTNAM为JOHNSO的FIRSTNAM信息。#include<>#include<>#include<>main()EXEC charSQLBEGINfirstname13;DECLARE SECTIONcharuserid9;charpasswd19;EXECSQLENDDECLARESECTION;EXECSQLCONNECT TOsample;EXECSQL(3)(2)SELECT FIRSTNME INTO:firstname(4)FROM employeeWHERE LASTNAME&
2、#39;JOHNSON' (4)printf("Firstname%sn".firstname);EXECSQL CONNECT RESET;(5)return0;上面是一个简单的静态嵌入 SQL语句的应用程序。它包括了嵌入SQL的主要部分:(1)中的 includeSQLCA语句定义并描述了SQLCA勺结构。SQLCAi于应用程序和数据库之间的通讯,其中的SQLCOD返回SQL语句执行后的结果状态。(2)在 BEGIN DECLARE SECTION和 END DECLARE SECTION之间定义了宿主变量。宿主变 量可被SQL语句引用,也可以被C语言语句引用。
3、它用于将程序中的数据通过 SQL语句传给数据库管理器, 或从数据库管理器接收查询的结果。在 SQL语句中,主变量前均有“:”标志以示区别。(3) 在每次访问数据库之前必须做CONNEC操作,以连接到某一个数据库上。这时,应该保证数据库 实例已经启动。(4)是一条选择语句。它将表 employee中的LASTNAM为“JOHNSON的行数据的 FIRSTNAM查出,并 将它放在firstname 变量中。该语句返回一个结果。可以通过游标返回多个结果。 当然,也可以包含update、 insert 和 delete 语句。(5)最后断开数据库的连接。从上例看出,每条嵌入式SQL语句都用EXEC S
4、QL开始,表明它是一条SQL语句。这也是告诉预编译 器在EXEC SQL和“;”之间是嵌入 SQL语句。如果一条嵌入式 SQL语句占用多行,在 C程序中可以用 续行符“ ”。c 语言用 vc 连接 sql server 20002009/11/02 09:34 sql server 迅1.提取单条记录db"值比较db"示表格db"etLe ngth()*15;pList->I nsertColum n(in dex,field_name,LVCFMT_CENTER,Colum nWidth);int i=0;_bstr_t vCol;用C语言来操作SQL S
5、ERVE数据库,采用ODB(开放式数据库连接进行数据的添 加,修改,删除,查询等操作。stepl:启动 SQLSERVER务,例如:HNHJ,开始菜单-> 运行->net start mssqlserverstep2:打开企业管理器,建立数据库test,在test库中建立test表(avarchar(200),b varchar(200)step3:建立系统DSN开始菜单-> 运行->odbcad32,添力卩->SQL SERVER名称:csql,服务器:HNHJ使用用户使用登录ID和密码的SQLSERVER证,登录ID:sa,密码:更改默认的数据库为:test测
6、试数据源,测试成功,即 DNS添加成功文件完整代码1冃.茜据库操作中的添加,修改,删除,主要体现在SQL语句上2. 2.采用直接执行方式和参数预编译执行方式两种3. */4. intmai n()5. RETCODE retcode;6. UCHAR szDSNSQL_MAX_DSN_LENGTH+1 ="csql",7.8.9.接数据源szUIDMAXNAMEszAuthStrMAXNAME"sa",Illi 10.境句柄11.retcode=SQLAIIocHa ndle(SQL_HANDLE_ENV,LL,&he nv);12.retcod
7、e=SQLSetE nvAttr(he nv,SQL_ATTR_ODBCON,13.(SQLPOINTER)SQL_OV_ODBC3,14.SQL_IS_INTEGER);15.接句柄16.retcode=SQLAllocHa ndle(SQL_HANDLE_DBC,henv.& hdbc1);17.retcode=SQLCo nn ect(hdbc1,szDSN,4,zUID,2,szAuthStr,0);18.建并执行-条或多条 SQL语句19./*20.1.分配一个语句句柄(stateme nthan dle)21.2.创建SQL语句22.3.执行语句23.4.销毁语句24.*/
8、25.retcode=SQLAllocHa ndle(SQL_HANDLE_STMT,hdbc1,& hstmt1);26.开数据源27./*28.1.断开与数据源的连接.29.2.释放连接句柄.30.3.释放环境句柄(如果不再需要在这个环境中作更多连接)31.*/NUsVERSISQLDisco nn ect(hdbc1);SQLFreeHa ndle(SQL_HANDLE_DBC, hdbc1);SQLFreeHa ndle(SQL_HANDLE_ENV, he nv);return(0);敝海件查询,2.直接查询全部*/int mai n()RETCODE retcode;UCH
9、AR szDSNSQL_MAX_DSN_LENGTH+1 ="csql",32.33.34.35.36.1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.a'"szUIDMAXNAMEszAuthStrMAXNAMEUCHAR sql139="select"sa",Illi b from testwhere a'aaUCHAR sql235="selectb from testwhereIIUCHAR sql319"select b from test"retcode
10、SQLAllocHa ndle(SQL_HANDLE_ENV, NULL,& he nv);retcodeSQLSetE nvAttr(he nv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL IS INTEGER);retcodeSQLAIIocHa ndle(SQL_HANDLE_DBC,henv,&hdbc1);接数据源retcodeSQLCo nn ect(hdbc1,szDSN,4,zUID,2,szAuthStr,0);if(retcode!=SQL_SUCCESS)&&retcode!=SQL
11、_SUCCESS_WITH_INFO) )printf("连接失败!");else建并执行一条或多条SQL语句/*16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.1. 分配一个语句句柄(stateme nthan dle)2. 创建SQL语句3. 执行语句4. 销毁语句 */retcodeSQLAllocHa ndle(SQL_HANDLE_STMT,hdbc1,& hstmt1);定参数值编译SQLPrepare(hstmt1,sql2,35);SQLBi ndParameter(
12、hstmt1,1,SQL_PARAMN PUT,SQL_C_CHAR,SQL_CHAR,200,0,& a,0, &p);行SQLExecute(hstmt1);char list5;SQLBi ndCol(hstmt1,1, SQL_C_CHAR, list, 5,0);SQLFetch(hstmt1);prin tf("%sn",list);*/认一个结果集是否可用。2. 将结果集的列绑定在适当的变量上。3. 取得行*/查结果记录(如果有的话)SQLExecDirect (hstmt1,sql3,19);char list5;SQLBi ndCol(hs
13、tmt1,1, SQL_C_CHAR, list, 5,0);doretcode = SQLFetch(hstmt1);if(retcode = SQL_NO_DATA)break;prin tf("%sn",list);while(1);开数据源/*1. 断开与数据源的连接.2. 释放连接句柄.3. 释放环境句柄(如果不再需要在这个环境中作更多连接)*/SQLDisco nn ect(hdbc1);38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.SQLFree
14、Handle(SQL HANDLE DBC, hdbc1);v1.0可编辑可修改65. SQLFreeHa ndle(SQL_HANDLE_ENV, he nv);66. return(O);67. 创建数据源的过程代码:#in clude<>#in lcude<>#in clude<>#in clude<>#in clude<>#in clude<>#defi ne SNO_LEN 30#defi ne NAME_LEN 50#defi ne DEPART_LEN 100#defi ne SSEX_LEN 5int ma
15、i n()15v1.0可编辑可修改/*Step 1定义句柄和变量 */以king开头的表示的是连接 KingbaseES的变量/以server开头的表示的是连接 SQLSERVE的变量SQLHENVkin ghe nv,serverhe nv;SQLHDBCki nghdbc,serverhdbc;SQLHSTMTkin ghstmt,serverhstmt;SQLRETURN ret;SQLCHAR sNameNAME_LEN,sDepartDEPART_LEN,sSexSSEX_LEN,sS no SNO_LEN;SQLINTEGER sAge;SQLINTEGRR cbAge=0,cbS
16、 no=SQL_NTS,cbSex=SQL_NTS,cbName=SQL_NTS,cbDepart=SQL_NTS;/*Step 2初始化环境*/ret=SQLAIIocHa ndle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&ki nghe nv);ret=SQLAIIocHa ndle(SQL_HANDLE_ENV,SQL_NULL_HANDLE, &setverhe nv);ret=SQLSetE nvAttr(ki nghe nv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0); ret=SQLSetE n
17、vAttr(serverhe nv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);/*Step 3 建立连接*/ret=SQLAIIocHa ndle(SQL_HANDLE_DBC,ki nghe nv,& ki nghdbc);ret=SQLAIIocHa ndle(SQL_HANDLE_DBC,serverhe nv,& serverhdbc);ret=SQLCo nn ect(k in ghdbc,"Ki ngbaseES ODBC",SQL_NTS,"SYSTEM",SQL_NTS,&q
18、uot;MANAGER",SQL_NTS);if(!SQL_SUCCEEDED(ret)return -1;/连接失败时返回错误值;ret=SQLCo nn ect(serverhdbc,"SQLServer",SQL_NTS,"sa",SQL_NTS,"sa",SQL_NTS);if(!SQL_SUCCEEDED(ret)return -1;/连接失败时返回错误值;/*Step 4初始化语句句柄*/ret=SQLAllocHa ndle(SQL_HANDLE_STMT,ki nghdbc,&ki nghstmt);
19、ret=SQLSetStmtAttr(k in ghstmt,SQL_ATTR_ROW_BIND_TYPE(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTEGER);ret=SQLAllocHa ndle(SQL_HANDLE_STMT,serverhdbc, &serverhstmt);/*Step 5 两种方式执行语句*/*预编译带有参数的语句 */ret=SQLPrepare(sercerhstmt,"INSERT INTO STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT)VALUES(,)",SQL_NT
20、S);if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)ret=SQLBi ndParameter(serverhstmt,1,SQL_PARAMN PUT,SQL_C_CHAR,SQL_CHAR,SNO_LEN,0,sS no,0,&cbSNO);ret=SQLBi ndParameter(serverhstmt,2,SQL_PARAMN PUT,SQL_C_CHAR,SQL_CHAR,SNAME_LEN,0,sName,0,&cbNam e);ret=SQLBi ndParameter(serverhstmt,3,SQL_PARAMN
21、 PUT,SQL_C_CHAR,SQL_CHAR,2,0,sSex,0,&cbSex);ret=SQLB in dParameter(serverhstmt,4,SQL_PARAMN PUT,SQL_C_LONG,SQL_INTEGER,0,0, &sAge,0,&cbAge);ret=SQLBi ndParameter(serverhstmt,5,SQL_PARAMN PUT,SQL_C_CHAR,SQL_CHAR,DEPART_LEN,0,sDepart,0,&cbD epart);/*执行SQL语句*/ret=SQLExecDirect(k in ghstmt,"SELECT * FROM STUDENT",SQL_NTS);if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)ret=SQLBi ndCol(ki nghstmt,1,SQL_C_CHAR,sS no,SNO_LEN, &cbS no);ret=SQLB in dCol(k in ghstmt,2,SQL_C_CHAR,sName,NAME_LEN,&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 严格苗圃管理制度
- 中医13项管理制度
- 中医科科管理制度
- 中国水法管理制度
- 中外媒体管理制度
- 中央文件管理制度
- 中学公房管理制度
- 中学网课管理制度
- 中小校长管理制度
- 中建仓库管理制度
- 2023年贵州省粮食储备集团有限公司面向社会公开招聘工作人员15人笔试参考题库附带答案详解
- 痘痘专业知识课件图
- 超星尔雅学习通《国家安全教育(中国人民公安大学)》2025章节测试附答案
- 艾梅乙防治知识培训课件
- 胸腔穿刺术护理查房
- 全过程咨询项目管理
- 2024年广东省广州市白云山风景名胜区管理局分支机构第一次公开招聘考试真题及答案
- DB65T 8020-2024 房屋建筑与市政基础设施工程施工现场从业人员配备标准
- 2024年江西省水利投资集团有限公司招聘考试真题
- 2024年贵州省普通高校招生信息表(普通类本科批-物理组合)
- 2025年个人与企业投资合同模板
评论
0/150
提交评论