第八章 数据库编程

8.1 嵌入式SQL(C语言版)

被嵌入的语言(java ,C++)等被称为宿主语言,简称主语言

  • 当主语言 为 C 语言的时候

    ​ 语法格式为

    EXEC SQL <SQL语句>
    
  • 当主语言为java的时候

    格式为

    #SQL {<SQL语句>}
    

以下讲解是C语言

数据库的连接和断开


SQL执行的提交与撤销

示例

#include <stdio.h>
#include “prompt.h”
exec sql include sqlca;
char cid_prompt[ ] = “Please enter customer id: ”;
int main()
{ exec sql begin declare section;
char cust_id[5], cust_name[14];
float cust_discnt;
char user_name[20],user_pwd[20];
exec sql end declare section;
exec sql whenever sqlerror goto report_error;
exec sql whenever not found goto notfound;
strcpy(user_name, “poneilsql”);
strcpy(user_pwd, “XXXX”);
exec sql connect :user_name identified
by :user_pwd;
while((prompt(cid_prompt,1,cust_id,4)) >=0) {exec sql select cname,discnt
into :cust_name, :cust_discnt
from customers where cid=:cust_id;
exec sql commit work;
printf(“Customer’s name is %s and discount
is %5.1f\n”,cust_name,cust_discnt);
continue;
notfound: printf(“Can’t find customer %s,
continuing\n”,cust_id); }
exec sql commit release;
return 0;
report_error:
print_dberror();
exec sql rollback release;
return 1;
}

游标

  1. 检索单行结果,可将结果直接传送到宿主程序的变量中
EXEC SQL SELECT [ALL | DISTINCT] expression [, expression…]
INTO host-variable , [host-variable, …]
FROM tableref [corr_name] [ , tableref [corr_name] …]
WHERE search_condition;

example

exec sql select Sname, Sage into :vSname, :vSage from Student where
Sname = :specName ;
  1. 检索多行结果,则需使用游标(Cursor)

    • 游标是指向某检索记录集的指针
    • 通过这个指针的移动,每次读一行,处理一行,再读一行… , 直至 处理完毕

#define TRUE 1
#include <stdio.h>
#include “prompt.h”
exec sql include sqlca;
exec sql begin declare section;
char cust_id[5], agent_id[14];
double dollar_sum;
exec sql end declare section;
int main()
{ char cid_prompt[ ]=“Please enter customer ID:”;
exec sql declare agent_dollars cursor for select aid,sum(dollars)
from orders where cid = :cust_id group by aid;
exec sql whenever sqlerror goto report_error;
exec sql connect to testdb;
exec sql whenever not found goto finish;while((prompt(cid_prompt,1,cust_id,4)) >=0) {exec sql open agent_dollars;
while(TRUE) {exec sql fetch agent_dollars into :agent_id, :dollar_sum;
printf(“%s %11.2f\n”,agent_id, dollar_sum);
}
finish: exec sql close agent_dollars;
exec sql commit work;
}
exec sql disconnect current;
return 0;
report_error:
print_dberror();
exec sql rollback;
exec sql disconnect current;
return 1;
}

通过QDBC可以使游标移动,进行增删改

异常

SQLCA

SQLCA是一个已被声明过的具C语言的结构形式的内存信息区,其中的成员变 量用来记录SQL语句执行的状态,便于宿主程序读取与处理  SQLCA是DBMS(执行SQL语句)与宿主程序之间交流的桥梁之一

8.2过程化sql

变量的声明与使用

流程控制


8.3存储过程

创建存储过程

​ CREATE OR REPLACE PROCEDURE 过程名([参数1,参数2,…]) AS <过程化SQL块>;

过程名:数据库服务器合法的对象标识
参数列表:用名字来标识调用时给出的参数值,必须指定值的数据类型。参数也可以定义输入参数、输出参数或输入/输出参数,默认为输入参数
过程体:是一个<过程化SQL块>,包括声明部分和可执行语句部分

执行存储过程

CALL/PERFORM PROCEDURE 过程名([参数1,参数2,…]);

修改存储过程

ALTER PROCEDURE 过程名1 RENAME TO 过程名2;

删除存储过程

DROP PROCEDURE 过程名();

ODBC

OLE DB

JDBC

【数据库】第八章 数据库编程相关推荐

  1. 实验四 数据库SQL语言基础编程

    -- 实验四 数据库SQL语言基础编程 -- 实验目的: --  掌握数据库查询语句的编写方法 --  掌握利用查询语言完成基本查询 --  掌握利用SQL语句完成数据的添加.删除.修改操作 -- 实 ...

  2. oracle数据库第八章答案,Oracle培训(三十)——Oracle 11g 第八章知识点小结——处理数据...

    Oracle培训(三十)--Oracle 11g 第八章知识点总结--处理数据 Oracle 11g 第八章知识点总结--处理数据 知识点预览 复习 处理数据 复习 --建表t_user create ...

  3. mysql connector c编程_MySQL数据库之MySQL Connector 编程

    本文主要向大家介绍了MySQL数据库之MySQL Connector 编程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. MySQL Connector 是MySQL数据库客户 ...

  4. python基本知识、数据库、网络、编程等总结

    Python语言特性 1 Python的函数参数传递 看两个例子: a = 1 def fun(a):a = 2 fun(a) print a # 1 a = [] def fun(a):a.appe ...

  5. linux下数据库时间格式,Java编程时间格式与数据库中时间格式转化

    关于编程语言中的时间格式和关系型数据中的中时间格式问题的转化一直都是个简单而又不得不权衡的问题,这牵扯到数据库设计和SQL编程和应用程序中时间格式数据的处理的编程,两者总能够交缠在一起. 关于Java ...

  6. JSP危险化学品管理系统myeclipse开发mysql数据库bs框架java编程jdbc详细设计

    一.源码特点      JSP危险化学品管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8. ...

  7. JSP房地产门户管理系统myeclipse开发mysql数据库BS模式java编程网页结构详细设计

    一.源码特点      JSP 房地产门户管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8 ...

  8. JSP水电费管理系统myeclipse开发mysql数据库web结构java编程

    一.源码特点   JSP水电费管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发. 下载地址: JSP水电费管理系 ...

  9. asp.net摄影网站系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目

    一.源码特点         ASP.NET C# 摄影网站系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发.开发环境为vs2010,数据库为sqlser ...

最新文章

  1. java初学者的书中收获
  2. 旋转矩阵、欧拉角、四元数比较
  3. 通过docker搭建zabbix监控系统
  4. TIBCO Rendezvous — 技术介绍
  5. 虚拟局域网软件开源_ZeroTier虚拟局域网免费远程桌面体验--替代TeamViewer
  6. Android listview addHeaderView 和 addFooterView 详解
  7. 百度网盘直接解析高速下载文件源码
  8. bond解除 centos7_centos7上实现bonding
  9. 合宙800 cgnsinf 只回复ok_中奖了吗?老夫妻突然被告知账户多了800多万元!记者去调查,钱又没了!|汉口银行|民政局|低保|周师傅...
  10. 传感器的时间同步系统
  11. python的安装以及使用和文本编译器的安装使用
  12. Oracle PLSQL语句实例
  13. 2014 计算机学科 排名,2014QS世界大学学科排名:计算机学科排行榜
  14. 太阳高度角与方位角计算
  15. JPG插入GPS信息
  16. Android开发之获取手机运行时间
  17. Springer的latex压缩包上传转不了pdf
  18. [NLP]预处理--使用re正则化进行文本清理
  19. 2021 Google 开发者大会进行时: 汇聚开发者合力,共建全球技术生态
  20. @Aspect无法使用的问题

热门文章

  1. 什么是MyBatis
  2. inux中,如何把一个目录及其子目录中的读写权限交给一个普通用户!
  3. 一文带你快速了解 Java 线上问题快速诊断神器 Arthas
  4. 如何将带Dxperience组件的Asp.net 2.0网站部署到服务器(转载)
  5. 计算机组装机配置单2019,2019年电脑主流配置
  6. 八斗大数据20期冲击百万年薪完结分享
  7. su 和 sudo su 的区别
  8. FPGA:什么是IO单元、IO标准、Bank、VCCO、VREF
  9. Python中Scrapy框架的代理使用
  10. SQL的update语句