c程序通过什么连接oracle

c程序通过什么连接oracle,第1张

一般C语言连接oracle数据库通过使用oracle提供的OCI接口和PROC编程接口两种方式

OCI方式纯粹是一些函数接口。

PROC是oracle提供的一种C与ORACLE SQL的混合编程。程序(以.pc为后缀)编好之后,使用oracle提供的proc预编译程序,将pc文件编译成c文件(这一过程,相当于将SQL转换为OCI的接口),然后再使用c语言编译器生成可以执行文件。

OCI方式不容易入门,它拥有大量的接口函数,要很快熟悉它,非常难。但OCI方式的编程效率很高。

porc方式简单易用。可用于对性能要求不太高的项目。

连接代码如下:

int main()

{

EXEC SQL BEGIN DECLARE SECTION

char oc_passwd[101] /*数据库密码*/

char oc_userid[101] /*数据库用户名*/

char oc_dbname[101] /*数据库名*/

char oc_coad[101]

EXEC SQL END DECLARE SECTION

memset(oc_passwd, 0x00, sizeof(oc_passwd))

memset(oc_userid, 0x00, sizeof(oc_userid))

memset(oc_dbname, 0x00, sizeof(oc_dbname))

/*取数据库用户名*/

strcpy(oc_userid, "userid")

/*取数据库用户密码*/

strcpy(oc_passwd, "passwd")

/*取数据库名*/

strcpy(oc_dbname, "dbname")

EXEC SQL CONNECT :oc_userid

IDENTIFIED BY :oc_passwd

USING :oc_dbname

if (sqlca.sqlcode != 0)

{

printf("用户名[%s]密码[%s]数据库[%s]\n", oc_userid, oc_passwd, oc_dbname)

printf("连接数据库失败,sqlcode=%d\n", sqlca.sqlcode)

return -1

}

/*读table取coad字段*/

memset(oc_coad, 0x00, sizeof(oc_coad))

EXEC SQL SELECT coad

INTO :oc_coad

FROM table

WHERE 1=1

if (sqlca.sqlcode == NORECORD)

{

printf("查询无记录\n")

return -1

}

else if (sqlca.sqlcode != 0)

{

printf("查询失败,sqlcode=%d\n", sqlca.sqlcode)

return -1

}

return 0

}

首先,这类问题应该问到编程区去,这是软件喔

########insert.pc############

#include <stdio.h>

EXEC SQL INCLUDE SQLCA

void insert (char password_[6],char id_[20],int balance_)

{

EXEC SQL BEGIN DECLARE SECTION

VARCHAR user[20],pass[20],tnsname[20]

char password[6]

char id[20]

int balance

EXEC SQL END DECLARE SECTION

strcpy(user.arr,"scott")

user.len=(unsigned short)strlen((char *)user.arr)

strcpy(pass.arr,"tiger")

pass.len=(unsigned short)strlen((char *)pass.arr)

strcpy(tnsname.arr,"demo1")

tnsname.len=(unsigned short)strlen((char *)tnsname.arr)

strcpy(id,id_)

strcpy(password,password_)

balance = balance_

EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :tnsname

EXEC SQL insert into bank_bingo values (:id , :password , :balance)

EXEC SQL COMMIT WORK

EXEC SQL commit work release

}

#################main.c####################

#include <stdio.h>

extern void insert (char password_[6],char id_[20],int balance_)

int main(int argc , char ** argv){

char id [20] = "10001"

char password[6] = "123"

int balance = 10000

insert(password , id , balance)

return 0

}

############################################


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10073182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存