设为首页 加入收藏

TOP

[转]什么是Pro*C/C++,嵌入式SQL,第一个pro*c程序,pro*c++,Makefile,Proc增删改查(一)
2017-10-12 17:39:09 】 浏览:1613
Tags:什么 Pro C/C 嵌入式 SQL 一个 pro 程序 Makefile Proc 删改

1 什么是Pro*C/C++

1、通过在过程编程语言C/C++中嵌入SQL语句而开发出的应用程序

2、什么是嵌入式SQL

1、在通用编程语言中使用的SQL称为嵌入式SQL

2、在SQL标准中定义了很多中语言的嵌入式SQL

3、各个厂商对嵌入式SQL的具体实现不同

3、什么是Pro*C/C++

1、在C/C++语言中嵌入SQL语句而开发出的应用程序。

2、目的:使c/c++这种效率语言称为访问数据库的工具。

4、嵌入式SQL的载体是宿主语言

宿主语言 Pro程序

C/C++ Pro*C/C++

FORTRAN Pro*FORTRAN

PASCAL Pro*PASCAL

COBOL Pro*COBOL

PL/I Pro*PL/I

Ada Pro*Ada

5、访问数据库的方法

(1)用SQL * Plus,它有SQL命令以交互的应用程序访问数据库;

(2)用第四代语言应用开发工具开发的应用程序访问数据库,这些工具有SQL*Froms,QL*Reportwriter,SQL*Menu等.

(3)利用在第三代语言嵌入的SQL语言或ORACLE库函数来调用来访问。访问oracle数据库的方法。

其它:

\

\

6、第一个pro*C程序

A 在进行pro*c程序开发的时候,要配置/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/admin下的pcscfg.cfg。

\

上面的配置是一个正确的配置。

B 创建dm01_hello.pc

文件内容如下:

依赖的头文件:

/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/public下的SQLCA.H

dm01_hello.pc文件内容(使用UE工具,保存后即可通过FTP上传到服务器上)

#include <stdio.h>

#include <string.h>

#include "sqlca.h"

//定义宿主变量 serverid

EXEC SQL BEGIN DECLARE SECTION;

//格式:用户名/用户密码@服务器名

char *serverid = "scott/123456@orcl";

EXEC SQL END DECLARE SECTION;

int main()

{

int ret = 0;

printf("hello....\n");

//在C中是宿主变量

printf("serverid:%s \n", serverid);

//嵌入式SQL语言必须要以 EXEC SQL开头

//:serverid 加上:表示使用这个变量

EXEC SQL connect :serverid;

if (sqlca.sqlcode != 0)

{

ret = sqlca.sqlcode;

printf("EXEC SQL connect:err, %d\n", ret);

return ret;

}

printf("connect ok\n");

return ret;

}

编译并运行:dm01_hello.pc,执行的命令是:proc dm01_hello.pc

\

接着生成.out文件。

注意一个错误1:

\

出现上面的错误的原因是没有引入共享库,要按照下面的方式执行:

gcc dm01_hello.c -o dm01_hello -I/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/public -L/home/oracle_11/app/oracle/product/11.2.0/db_1/lib –lclntsh

上面的是引入clntsh.so这个共享库

注意错误2:

[oracle@localhost day03]$ ./dm01_hello

hello....

serverid:scott/123456@orcl

EXEC SQL connect:err, -12541

可以通过下面的命令查看错误原因:

oerr ora 12541 (这个错误是因为监听未启动)

这时候要:

sqlplus /nolog

conn /as sysdba

startup

quit

在执行:

lsnrctl start (可以通过ps –u oracle命令查看oracle相关启动服务)

再执行的时候就不会出现错误了。

7 PreCompile编译器预编译程序

1、该工具在什么地方

功能:完成Pro*c源程序到纯C源程序的转换

基本命令格式:

PROC INAME=filename [OptionName1=value1]…[OptionNameN=valueN]

常用编译选项:

INAME=path and filename (name of the input file)

ONAME=path and filename (name of the output file)

INCLUDE=path (头文件所在路径)

--INCLUDE =路径名或 INCLUDE =(路径名1,路径名2)

PARSE=FULL | PARTIA | NONE (default FULL for C, Others for C++) 如果想编译c++,要改成PARTIA或NONE

CODE=ANSI_C | CPP (default ansi_c)

USERID=username/password

8 proc编译c++文件

默认情况下proc是编译 .c 文件的。要想编译c++文件,需要执行类似下面的操作:

proc iname=./dm02_hello.pconame=dm02_hello.cc PARSE=NONE CODE=CPP

#include <iostream>

#include <stdio.h>

#include <string.h>

#include "sqlca.h"

using namespace std;

//定义宿主变量 serverid

EXEC SQL BEGIN DECLARE SECTION;

char *serverid = "scott/123456@orcl";

EXEC SQL END DECLARE SECTION;

int main()

{

int ret = 0;

cout << "hello..." << endl;

//在C中宿主变量

printf("serverid:%s \n",serverid);

//嵌入式SQL语言必须要以EXEC SQL开头

//:serverid 要引用serverid时,要使用:

EXEC SQL connect :serverid;

if(sqlca.sqlcode != 0)

{

ret = sqlca.sqlcode;

printf("EXEC SQL connect:err,%d\n",ret);

return ret;

}

printf("connect ok \n");

return ret;

}

执行命令:

proc iname=./dm02_hello.pc oname=dm02_hello.cc PARSE=NONE CODE=CPP

执行结果:

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C基础 寻找随机函数的G点 下一篇【001:ubuntu下搭建ESP8266开发..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目