b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

系统概论_系统概论 第五版_系统概论简单吗(2)

电脑杂谈  发布时间:2016-12-28 22:03:29  来源:网络整理

学校的信息系统要从这两个中存取数据 为了方便地与两个连接,为学校人事创建一个数据源名PERSON,为教学科研创建一个名为EDU的数据源 当要访问每一个时,只要与PERSON和EDU连接即可,不需要记住使用的驱动程序、服务器名称、名 8.4 ODBC编程 8.4.1 ODBC概述 8.4.2 ODBC工作原理概述 8.4.3 ODBC API 基础 8.4.4 ODBC的工作流程 8.4.3 ODBC API 基础 ODBC 应用程序编程接口的一致性 API一致性 包含核心级、扩展1级、扩展2级 语法一致性 包含最低限度SQL语法级、核心SQL语法级、扩展SQL语法级 ODBC API 基础(续) 1. 函数概述 2. 句柄及其属性 3. 数据类型 1. 函数概述 ODBC 3.0 标准提供了76个函数接口 分配和释放环境句柄、连接句柄、语句句柄 连接函数(SQLDriverconnect等) 与信息相关的函数(SQLGetinfo、SQLGetFuction等) 事务处理函数(如SQLEndTran) 执行相关函数(SQLExecdirect、SQLExecute等) 编目函数,ODBC 3.0提供了11个编目函数,如SQLTables、SQLColumn等。

应用程序可以通过对编目函数的调用来获取数据字典的信息,如权限、表结构等 函数概述(续) ODBC不同版本上的函数和函数使用是有差异的,读者必须注意使用的版本,目前最新的版本是ODBC 3.8 2. 句柄及其属性 句柄是32位整数值,代表一个指针 ODBC 3.0中句柄分类 环境句柄 连接句柄 语句句柄 描述符句柄 句柄及其属性(续) 应用程序句柄之间的关系 每个ODBC应用程序需要建立一个ODBC环境,分配一个环境句柄,存取数据的全局性背景,如环境状态、当前环境状态诊断、当前在环境上分配的连接句柄等 一个环境句柄可以建立多个连接句柄,每一个连接句柄实现与一个数据源之间的连接 句柄及其属性(续) ODBC应用程序 环境句柄 连接句柄 语句句柄 数据源 描述符句柄 1 1 1 n 1 n 1 1 1 n 图8.4 应用程序句柄之间的关系 句柄及其属性(续) 应用程序句柄之间的关系(续) 在一个连接中可以建立多个语句句柄,它不只是一个SQL语句,还包括SQL语句产生的结果集以及相关的信息等 在ODBC 3.0中又提出了描述符句柄的概念,它是描述SQL语句的参数、结果集列的元数据集合 3. 数据类型 ODBC数据类型 SQL数据类型:用于数据源 C数据类型 :用于应用程序的C代码 应用程序可以通过SQLGetTypeInfo来获取不同的驱动程序对于数据类型的支持情况 数据类型(续) SQL数据类型和C数据类型之间的转换规则 SQL数据类型 C数据类型 SQL数据类型 数据源之间转换 应用程序变量传送到语句 参数(SQLBindparameter) C数据类型 从结果集列中返回到应用 程序变量(SQLBindcol) 应用程序变量之间转换 8.4 ODBC编程 8.4.1 ODBC概述 8.4.2 ODBC工作原理概述 8.4.3 ODBC API 基础 8.4.4 ODBC的工作流程 8.4.4 ODBC的工作流程 ODBC的工作流程 ODBC的工作流程(续) [例8.11] 将KingbaseES中Student表的数据备份到SQL Server中。

该应用涉及两个不同的关系管理系统中的数据源 使用ODBC来开发应用程序,只要改变应用程序中连接函数(SQLConnect)的参数,就可以连接不同关系管理系统的驱动程序,连接两个数据源 ODBC的工作流程(续) 在应用程序运行前,已经在KingbaseES和SQL Server中分别建立了Student关系表 应用程序要执行的操作 在KingbaseES上执行SELECT * FROM Student; 把获取的结果集,通过多次执行INSERT语句插入到SQL Server的Student表中 ODBC的工作流程(续) 操作步骤 1. 配置数据源 2. 初始化环境 3. 建立连接 4. 分配语句句柄 5. 执行SQL语句 6. 结果集处理 7. 中止处理 1. 配置数据源 配置数据源有两种方法 运行数据源管理工具来进行配置 使用Driver Manager 提供的ConfigDsn函数来增加、修改或删除数据源 在[例8.12]中,采用第一种方法创建数据源。因为要同时用到KingbaseES和SQL Server,所以分别建立两个数据源,将其取名为KingbaseES ODBC和SQL Server 配置数据源(续) [例8.12] 创建数据源的详细过程 #include #include #include #include #include #include #define SNO_LEN 30 #define NAME_LEN 50 #define DEPART_LEN 100 #define SSEX_LEN 5 配置数据源(续) 创建数据源---第一步:定义句柄和变量 int main /* Step 1 定义句柄和变量 */ /*以king开头的表示的是连接KingbaseES的变量*/ /*以server开头的表示的是连接SQLServer的变量*/ SQLHENV kinghenv,serverhenv; /*环境句柄*/ SQLHDBC kinghdbc,serverhdbc; /*连接句柄*/ SQLHSTMT kinghstmt,serverhstmt; /*语句句柄*/ SQLRETURN ret; SQLCHAR sName[NAME_LEN],sDepart[DEPART_LEN], sSex[SSEX_LEN],sSno[SNO_LEN]; SQLINTEGER sAge; SQLINTEGER cbAge 0,cbSno SQL_NTS,cbSex SQL_NTS, cbName SQL_NTS,cbDepart SQL_NTS; 2. 初始化环境 没有和具体的驱动程序相关联,由Driver Manager来进行控制 ,并配置环境属性 应用程序通过调用连接函数和某个数据源进行连接后,Driver Manager才调用所连的驱动程序中的SQLAllocHandle,来真正分配环境句柄的数据结构 初始化环境(续) 创建数据源---第二步:初始化环境 /* Step 2 初始化环境 */ ret SQLAllocHandle SQL_HANDLE_ENV,SQL_NULL_HANDLE, &kinghenv ; ret SQLAllocHandle SQL_HANDLE_ENV,SQL_NULL_HANDLE, &serverhenv ; ret SQLSetEnvAttr kinghenv,SQL_ATTR_ODBC_VERSION, void* SQL_OV_ODBC3, 0 ; ret SQLSetEnvAttr serverhenv,SQL_ATTR_ODBC_VERSION, void* SQL_OV_ODBC3, 0 ; 3. 建立连接 应用程序调用SQLAllocHandle分配连接句柄,通过SQLConnect、SQLDriverConnect或SQLBrowseConnect与数据源连接 SQLConnect连接函数的输入参数为: 配置好的数据源名称 用户ID 口令 [例8.12]中KingbaseES ODBC为数据源名字,SYSTEM为用户名,MANAGER为用户密码 建立连接(续) 创建数据源---第三步:建立连接 /* Step 3 建立连接 */ ret SQLAllocHandle SQL_HANDLE_DBC, kinghenv, &kinghdbc ; ret SQLAllocHandle SQL_HANDLE_DBC, serverhenv, &serverhdbc ; ret SQLConnect kinghdbc,“KingbaseES ODBC”, SQL_NTS,“SYSTEM”,SQL_NTS, "MANAGER",SQL_NTS ; if !SQL_SUCCEEDED ret /*连接失败时返回错误值*/ return -1; ret SQLConnect serverhdbc, "SQLServer", SQL_NTS, "sa“,SQL_NTS,"sa",SQL_NTS ; if !SQL_SUCCEEDED ret /*连接失败时返回错误值*/ return -1; 4. 分配语句句柄 处理任何SQL语句之前,应用程序还需要首先分配一个语句句柄 语句句柄含有具体的SQL语句以及输出的结果集等信息 应用程序还可以通过SQLtStmtAttr来设置语句属性(也可以使用默认值) 分配语句句柄(续) 创建数据源---第四步 /* Step 4 初始化语句句柄 */ ret SQLAllocHandle SQL_HANDLE_STMT,kinghdbc, &kinghstmt ; ret SQLSetStmtAttr kinghstmt, SQL_ATTR_ROW_BIND_TYPE, SQLPOINTER SQL_BIND_BY_COLUMN, SQL_IS_INTEGER ; ret SQLAllocHandle SQL_HANDLE_STMT,serverhdbc, &serverhstmt ; [例8.12]中分配了两个语句句柄 一个用来从KingbaseES中读取数据产生结果集(kinghstmt) 一个用来向SQL Server插入数据(serverhstmt) [例8.12]中结果集绑定的方式为按列绑定 8.2.3 流程控制 过程化SQL功能 1. 条件控制语句 2. 循环控制语句 3. 错误处理 流程控制(续) 1. 条件控制语句 IF-THEN,IF-THEN-ELSE和嵌套的IF语句 (1)IF condition THEN Sequence_of_statements; END IF; (2)IF condition THEN Sequence_of_statements1; ELSE Sequence_of_statements2; END IF; (3)在THEN和ELSE子句中还可以再包含IF语句,即IF语句可以嵌套 流程控制(续) 2. 循环控制语句 LOOP,WHILE-LOOP和FOR-LOOP (1)简单的循环语句LOOP LOOP Sequence_of_statements; END LOOP; 多数服务器的过程化SQL都提供EXIT、BREAK或 LEE等循环结束语句,保证LOOP语句块能够结束 流程控制(续) 2. 循环控制语句(续) (2)WHILE-LOOP WHILE condition LOOP Sequence_of_statements; END LOOP; 每次执行循环体语句之前,首先对条件进行求值 如果条件为真,则执行循环体内的语句序列 如果条件为假,则跳过循环并把控制传递给下一个语句 流程控制(续) 2. 循环控制语句(续) (3)FOR-LOOP FOR count IN [REVERSE] bound1 … bound2 LOOP Sequence_of_statements; END LOOP; 流程控制(续) 3. 错误处理 如果过程化SQL在执行时出现异常,则应该让程序在产生异常的语句处停下来,根据异常的类型去执行异常处理语句 SQL标准对服务器提供什么样的异常处理做出了建议,要求过程化SQL管理器提供完善的异常处理机制 第八章 编程 8.1 嵌入式SQL 8.2 过程化SQL 8.3 存储过程和函数 8.4 ODBC编程 *8.5 OLE DB *8.6 JDBC编程 8.7 小结 8.3 存储过程和函数 8.3.1 存储过程 8.3.2 函数 *8.3.3 过程化SQL中的游标 8.3.1 存储过程 过程化SQL块类型 命名块 编译后保存在中,可以被反复调用,运行速度较快,过程和函数是命名块 匿名块 每次执行时都要进行编译,它不能被存储到中,也不能在其他过程化SQL块中调用 存储过程(续) 1. 存储过程的优点 2. 存储过程的用户接口 存储过程(续) 存储过程:由过程化SQL语句书写的过程,经编译和优化后存储在服务器中,使用时只要调用即可。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23745-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...