ESQL-C编程培训教材(2)

2019-02-15 15:26

错误!未指定书签。

? 有关可能发生或已经发生的事情的警告。

这些返回信息传送到一个称为sqlca的结构中,该结构定义在sqlca.h中: struct sqlca_s{ long char char long

sqlcode; sqlerrm[72]; sqlerrp[8]; sqlerrd[6];

sqlwarn0; sqlwarn1; sqlwarn2; sqlwarn3; sqlwarn4; sqlwarn5; sqlwarn6; sqlwarn7;

struct sqlcaw_s{

char char char char char char char char

} sqlwarn;

} sqlca;

上述sqlca结构中的信息反映了INFORMIX-ESQL/C语句执行后的情况:成功或异常,其中异常情况包括三种:

(1) 执行成功,但没有找到记录; (2) 执行成功,但出现警告信息; (3) 执行结果失败。

可通过sqlcode来检测SQL语句的执行结果,其含义如下:

? sqlcode=0时,说明语句执行成功;

? sqlcode=100,说明在执行Select或Fetch查找操作后返回零记录,在sqlca.h中将宏SQLNOTFOUND定义为100;

? sqlcode<0时,说明SQL语句执行后有错误发生

以下是一个简单的ESQL/C程序:

3

错误!未指定书签。

#include $include sqlca; main() { $char fname[15]; $char lname[20]; int i; printf( \ $database book; $declare democursor cursor for select fname,lname into $fname, $lname from bookname where lname>\ $open democursor; for( ; ; ) { $fetch democursor; if ( sqlca.sqlcode ) break; printf( \ } $close demecursor; printf( \}

1.5 ESQL/C程序的编译

用INFORMIX-ESQL/C语句编写的程序在使用C编译程序之前必须预处理,预处理程序把嵌入的语句转换成C语言程序。

INFORMIX-ESQL/C提供了编译命令esql,用来编译INFORMIX-ESQL/C源代码,这些源代码的名称必须具有.ec后缀才能进行转换。转换后的结果存在与源文件同名但后缀为“.c”的文件中,然后调用C编译器将.c文件转换成以.o为后缀的目标文件,最后调用C语言标准库和INFORMIX-ESQL/C库以及用户自己所链接的库生成可执行文件。

4

错误!未指定书签。

二 C语言程序中嵌入的SQL语句

2.1 有关数据库和表的权限

2.1.1 选择数据库(DATABASE)

功能:DATABASE语句用来选择已存在的数据库,使其成为当前数据库。 格式:DATABASE database_name

2.1.2 关闭数据库(CLOSE DATABASE)

功能:关闭当前数据库。 格式:CLOSE DATABASE

2.1.3 创建表(CREATE TABLE)

功能:在当前数据库中建立一张新表。 格式:CREATE [TEMP] TABLE table_name

(column_name datatype [NOT NULL],…)

2.1.4 删除表(DROP TABLE)

功能:删除一个已存在的表,以及相关的索引和数据。 格式:DROP TABLE table_name

2.2 数据查询语句SELECT

数据查询语句SELECT的执行结果有三种情况:

5

错误!未指定书签。

? 没有满足条件的记录; ? 返回单个记录; ? 返回多个记录。

前两种情况可以使用单个的SELECT语句,最后一种情况必须使用游标进行查询。

格式: SELECT 子句

[INTO子句] FROM TableList [WHERE FilterJoin]

[GROUP BY ColumnGroupList] [HAVING GroupFilter] [ORDER BY OrderFilter] [INTO TERMTable]

检索出来的数据存放的宿主变量 将检索处理的结果存在至临时表

说明: INTO子句

INTO TEMPTable

SELECT如果返回多个记录,必须通过游标方式进行处理。如果返回单条记录,我们将该语句称为单记录SELECT语句,如果有记录返回,sqlca.sqlcode则被设置为0,如果没有满足条件的记录,sqlca.sqlcode则被设置为SQLNOTFOUND,以下是对单记录SELECT语句操作的示例:

$char fj[11],zh[10],xb[20]; $double zhxb;

$SELECT fj,zh,xb,zhxb into

$fj, $zh, $xb, $zhxb from book

where book_num=100;

printf( \没有满足条件的记录\\n\

if ( sqlca.slqcode == SQLNOTFOUND )

if ( sqlca.sqlcode == 0 ) {

printf( \书名:%s\\n\printf( \作者:%s\\n\printf( \出版社:%s\\n\

6

错误!未指定书签。

}

printf( \定价:%.2f\\n\

2.3 插入语句INSERT

功能:INSERT语句的主要目的是在表中增加一条或多条新记录。 格式: INSERT INTO table_name

[(ColumnList)] VALUES( valuelist )

示例:

$INSERT INTO Customer( customer_num, fname, lname, company )

VALUES( 0, $Firstname, $Lastname, \

2.4 数据修改语句UPDATE

功能:UPDATE语句用来改变一个或多个记录中的一个或多个字段的值。 格式: UPDATE table_name SET

{column_name=expr[,…]|(column_list)=(expr_list)} [WHERE condition]

示例:

$UPDATE customer SET

(fname,lname)=($Fname,$Lname) WHERE customer_num=$cust;

2.5 数据删除语句DELETE

功能:删除语句DELETE从数据库表中删除一个或多个记录。 格式: DELETE FROM table_name

[WHERE {condition}]

示例:

7


ESQL-C编程培训教材(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:信号与系统分析经典试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: