当前位置: 首页 > news >正文

站长之家商城开发微信公众

站长之家商城,开发微信公众,浙江高端网站建设公司,网络推广平台大全文章目录 基本概述嵌入式 SQL动态 SQL总结 基本概述 嵌入式SQL和动态SQL是两种在应用程序中嵌入和使用SQL语句的方法。它们都允许开发人员在编程语言中编写SQL语句#xff0c;以便在应用程序中执行数据库操作。然而#xff0c;这两种方法在实现方式、性能和灵活性方面存在一… 文章目录 基本概述嵌入式 SQL动态 SQL总结 基本概述 嵌入式SQL和动态SQL是两种在应用程序中嵌入和使用SQL语句的方法。它们都允许开发人员在编程语言中编写SQL语句以便在应用程序中执行数据库操作。然而这两种方法在实现方式、性能和灵活性方面存在一些差异。 嵌入式SQL是一种将SQL语句直接嵌入到宿主语言如C、C、Java等代码中的方法。在这种情况下开发人员需要使用特定的语法和预处理器来将SQL语句与宿主语言代码集成在一起。嵌入式SQL的主要优点是它允许开发人员在编写应用程序时使用熟悉的宿主语言语法同时仍然能够利用SQL的强大功能。此外嵌入式SQL通常具有较好的性能因为它允许编译器在编译时检查SQL语句的有效性并生成优化的代码。 动态SQL是一种在运行时构建和执行SQL语句的方法。在这种情况下开发人员需要使用字符串拼接或模板引擎等技术来动态生成SQL语句。然后这些语句可以在应用程序运行时传递给数据库服务器进行执行。动态SQL的主要优点是它具有很高的灵活性因为它允许开发人员根据运行时条件构建和修改SQL语句。这使得动态SQL非常适合处理复杂的查询和更新操作以及支持用户自定义的查询和报告功能。然而动态SQL的性能可能较差因为它需要在运行时解析和优化SQL语句这可能导致额外的开销。 总的来说嵌入式SQL和动态SQL各有优缺点。嵌入式SQL适用于那些需要高性能和编译时错误检查的场景而动态SQL适用于那些需要高度灵活性和运行时动态生成SQL语句的场景。在选择使用哪种方法时开发人员应权衡这些因素并根据应用程序的具体需求做出决策。 在实际开发过程中开发人员可能需要结合使用嵌入式SQL和动态SQL。例如他们可以使用嵌入式SQL编写大部分数据库操作以确保高性能和编译时错误检查同时对于需要高度灵活性的部分可以使用动态SQL来实现。这种混合方法可以充分利用两种方法的优点同时避免它们的局限性。 嵌入式 SQL SQL 提供了将 SQL 语句嵌入某种高级语言中的使用方式但是如何识别嵌入在高级语言中的 SQL 语句通常采用预编译的方法。该方法的关键问题是必须区分主语言中嵌入的 SQL语句以及主语言和 SQL 间的通信问题。采用的方法由 DBMS 的预处理程序对源程序进行扫描识别出 SQL 语句把它们转换为主语言调用语句以使主语言编译程序能识别它最后由主语言的编译程序将整个源程序编译成目标码。 如何区分主语言语句与 SQL 语句 需要在所有的 SQL 语句前加前缀 EXEC SQL而 SQL 的结束标志随主语言的不同而不同。 PL/1 和 C 语言的引用格式为EXEC SQL SQL语句COBOL 语言的引用格式为EXEC SQL SQL 语句 END-EXEC 主语言与数据库如何通信 1SQL 通信区 (SQL Communication Area,SQLCA) 向主语言传递 SQL 语句执行的状态信息使主语言能够根据此信息控制程序流程。 2主变量也称共享变量。主语言向 SQL 语句提供参数主要通过主变量主变量由主语言的程序定义并用 SQL 的 DECLARE 语句说明引用变量一定要加上:。 EXEC SQL BEGIN DECLARE SECTION; /*说明主变量*/char Msno[4],Mcno[3],Givensno[5];int Mgrade;char SQLSTATE[6]; EXEC SQL END DECLARE SECTION;分析以上说明了五个共享变量其中SQLSTATE 是一个特殊的共享变量解释 SQL 语句执行状况的作用。当 SQL 语句执行成功时系统自动给 SQLSTATE 赋值上全零值否则为非全零”02000”)。因此当执行一条SQL语句后可以根据 SQLSTATE 的值转向不同的分支以控制程序的流向。引用时为了与 SQL 属性名相区别需在主变量前加: 。 示例1. 根据共享变量 givensno 值查询学生关系students 中学生的姓名、年龄和性别。 EXEC SQL SELECT sname,age,sexINTO :Msno,Mcno,:givensnoFROM studentsWHERE sno:Msno;示例2. 某学生选修了一门课程信息将其插入学生选课表SC中假设学号、课程号、成绩已分别赋给主变量HSno、Hcno和Hgrade。 EXEC SQL INSERT INTO SC(Sno,Cno,Grade)VALUES(:Hsno,:Hcno,:Hgrade);3游标。SQL 语言是面向集合的一条 SQL 语句可产生或处理多条记录。而主语言是面向记录的一组主变量一次只能放一条记录所以引入游标通过移动游标指针来决定获取哪一条记录。 定义游标说明性语句定义中的 SELECT 语句并不立即执行。语法如下 EXEC SQL DECLARE 游标名 CURSOR FOR SELECT 语句打开游标执行游标定义中的 SELECT 语句同时游标处于活动状态游标是一个指针此时指向查询结果的第一行之前。语法如下 EXEC SQL OPEN 游标名 推进游标使用时游标会推进一行并把指针指向的行称为当前行中的值取出送到共享变量中。变量表由逗号分开的共享变量组成。该语句经常用于宿主程序的循环结构中并借助宿主语言的处理语句逐一处理查询结果中的一个元组。语法如下 EXEC SQL FETCH FROM 游标名 INTO 变量表 关闭游标使用时关闭游标不再和查询结果相联系。关闭了的游标可以再次打开与新的查询结果相联系。在游标处于活动状态时可以修改和删除游标指向的元组。语法如下 EXEC SQL CLOSE 游标名 示例3. 在C语言中嵌入SQL的查询检索某学生的学习成绩其学号由共享主变量givensno给出结果放在主变量Sno,Cno,Grade中。如果成绩不及格则删除该记录如果成绩为60~69分则将成绩修改为70分并显示学生的成绩信息(除60分以下的) #DEFINE NO_MORE_TUPLES !(strcmp(SQLSTATE,02000)) void sel() {EXEC SQL BEGIN DECLARE SECTION; /*说明主变量*/char Msno[4],Mcno[3],givensno[5];int Mgrade;char SQLSTATE[6]; EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE Scx CURSOR FOR /* 说明游标Scx将查询结果与Scx建立联系*/SELECT Sno,Cno,GradeFROM SCWHERE Sno:givensno; EXEC SQL OPEN Scx; While(1) /* 用循环结构逐条处理结果集中的记录*/ {EXEC SQL FETCH FROM Scx /* 游标推进一行*/INTO :Msno,:Mcno,:Mgrade; /* 送入主变量注意每个变量要加分号;*/if (NO_MORE_TUPLES) Break; /* 处理完退出循环*/print(%s,%s,%d\n,sno,cno,g);};if (Mgrade60) /* 成绩60*/EXEC SQL DELETE FROM SC WHERE CURRENT OF Scx;Else {if (Mgrade 70) /* 成绩70*/EXEC SQL UPDATE SC SET grade 70 WHERE CURRENT OF Scx;MGrade 70}Printf(%s,%s,%d,Msno,Mcno,Mgrade); /*显示学生记录*/ EXEC SQL CLOSE Scx; /* 关闭游标*/ };动态 SQL 动态 SQL 允许程序在运行时构造、提交 SQL 查询。使用动态 SQL 语句时还可以改进技术当预备语句组合而成的 SQL 语句只需执行一次 那么预备语句可以在程序运行时由用户输入才组合起来但并不执行。 动态 SQL 预备语句格式 EXEC SQL PREPARE 动态SQL语句名 FROM 共享变量或字符串;动态 SQL 执行语句格式 EXEC SQL EXECUTE 动态SQL语句名;示例4. 动态 SQL 示例 char*query UPDATE sc SET Grade Grade*1.1 WHERE Cno ?; EXEC SQL PREPARE dynprog FROM :query; char cno[5] C4; EXEC SQL EXECUTE dynprog USING :cno;总结 嵌入式SQL和动态SQL是两种在应用程序中嵌入和使用SQL语句的方法。它们各自具有一定的优势和局限性适用于不同的场景。开发人员应根据应用程序的具体需求选择合适的方法并在必要时结合使用这两种方法以实现最佳的性能和灵活性。
http://www.w-s-a.com/news/940357/

相关文章:

  • 做微商什么是官方网站温州阀门外贸网站建设
  • 申请主机网站网站建设平台合同模板
  • 如何做ps4的游戏视频网站海口网红图书馆
  • 福建住房和城乡建设局网站做私人小网站赚钱吗
  • 物流的网站模板wordpress网站 800cdn
  • 建站公司合肥做精品课程网站需要啥素材
  • 成都三合一网站建设网站建设教程自学网
  • 门户网站跳出率wordpress火车头采集教程
  • 天津做网站的网络公司wordpress免费的模板
  • 有哪些关于校园内网站建设的法律如何申请免费网站空间
  • 玉溪市网站建设龙口网页定制
  • 网站开发都用什么软件上海景观设计公司10强
  • 网站建设氵金手指下拉十二深圳网站建设售后服务
  • 上海网站设计价青海企业网站制作
  • 静态网站做新闻系统深圳外贸网站建设哪家好
  • 网站如何做词360免费wifi老是掉线怎么办
  • 网站建设分金手指排名十八iis10 wordpress
  • 成都网站优化公司哪家好网站建设帮助中心
  • 做外单什么网站好佛山市建设企业网站服务机构
  • 哪些网站是单页面应用程序北京门头沟山洪暴发
  • 织梦(dedecms)怎么修改后台网站默认"织梦内容管理系统"标题关键词优化收费标准
  • 网站设计和备案企业官网网站建设免费
  • 公司概况-环保公司网站模板搜索引擎营销的基本流程
  • 门户网站建设经验天津市建设银行租房网站
  • 百度推广 帮做网站吗怎样修改网站的主页内容
  • 网站怎么做dns解析公司官网改版方案
  • 湛江市住房和城乡建设局网站杭州网站公司哪家服务好
  • 设计网站公司湖南岚鸿设计镜像的网站怎么做排名
  • 你注册过哪些网站微信app下载安装官方版2019
  • 杭州滨江的网站建设公司人才招聘网网站策划方案