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

建设php网站用wordpress 帮客户建站

建设php网站,用wordpress 帮客户建站,企业网站建设的主要目的是,网站如何调用数据库文章目录 基本概述嵌入式 SQL动态 SQL总结 基本概述 嵌入式SQL和动态SQL是两种在应用程序中嵌入和使用SQL语句的方法。它们都允许开发人员在编程语言中编写SQL语句,以便在应用程序中执行数据库操作。然而,这两种方法在实现方式、性能和灵活性方面存在一…

文章目录

    • 基本概述
    • 嵌入式 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

主语言与数据库如何通信?

(1)SQL 通信区 (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 (Mgrade<60)                  /* 成绩<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.yayakq.cn/news/358135/

相关文章:

  • 深圳营销型网站建设优化wordpress5.0.2编辑器
  • 骗别人做网站电商 网站 降低 跳出率 措施 效果
  • 兰州建设局网站公告做网站设计网站建设推广
  • 那里可以做网站网页源代码怎么看懂
  • php网站修改主页内容学编程去哪个培训机构好
  • 网站建设 企泰科技js网站源码下载
  • 老网站绑定新网站如何做?网络营销策略有哪几种
  • 长沙哪家网站设计好php wordpress 目录
  • 如何用php数据库做网站wordpress 增加字体
  • 让网站引用字体售卖网站建设实验报告
  • 企业网站标签页是什么红色php企业网站模板下载
  • 免注册制作网站东莞常平学校网站建设
  • 网站开发课设个人总结c 网站开发
  • 查找网站域名安亭做网站公司
  • 怎么样自己做网站百度竞价关键词
  • 公司做网站费用会计处理郑田生网站建设及维护
  • 手机网站备案费用天猫注册店铺流程及费用
  • 网站首页的导航栏网络营销如何进行
  • 顺的网站建设案例危险网站怎么做二维码
  • 做学校网站素材图片素材Wordpress 普通图片裁剪
  • 给公司申请网站用自己的账号湖南网站建设 干净磐石网络
  • 长沙在线网站的目标客户南昌网站建设专业公司
  • 深圳网站建设联系电话做网站专用素材
  • 网站默认中文字体厦门网站代理
  • 兰州网站订制企业寻找客户有哪些途径
  • 怎么增加网站权重标签下载 wordpress
  • 媒体查询做响应式网站有哪些wordpress设计菜单
  • 网站建设的基本流程和步骤龙华网站网页设计
  • 做网站建设的公司有哪些方面国外cps推广平台
  • 网站开发用什么字体一般山东省建设工程协会网站