数据库 Proc编程二
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlca.h" //连接数据库
/*
EXEC SQL CONNECT {:user IDENTIFIED BY :oldpswd | :usr_psw }
[[AT { dbname | :host_variable }] USING :connect_string ]
[ { ALTER AUTHORIZATION :newpswd | IN { SYSDBA | SYSOPER } MODE }];
*/ EXEC SQL BEGIN DECLARE SECTION;
char * serverid="scott/123456@orcl";
char user[];
char passwd[];
char sid[];
EXEC SQL END DECLARE SECTION; //user 用户名
//passwd 密码
//sid 数据库ID void main()
{
int ret=;
//C语言中使用宿主变量
//printf("serverid=%s\r\n",serverid); printf("user:");
scanf("%s",user); printf("passwd:");
scanf("%s",passwd); printf("sid:");
scanf("%s",sid); //连接数据库方式一--在嵌入SQL编程中使用变量需要加:
EXEC SQL connect:user IDENTIFIED BY :passwd USING :sid ;
//连接数据库方式二
//EXEC SQL connect:serverid;
if(sqlca.sqlcode!=)
{
ret=sqlca.sqlcode;
printf("connect err :%d",ret);
system("pause");
}else
{
printf("connect ok!\r\n");
//提交事务断开连接
EXEC SQL commit release;
printf("Oracle closed !\r\n");
system("pause");
}
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlca.h" EXEC SQL BEGIN DECLARE SECTION;
char *user="scott";
char *passwd="";
char *sid="orcl";
char *linkf="link1";//通过宿主变量 指定名字
char *linkt="link2";
EXEC SQL END DECLARE SECTION; //user 用户名
//passwd 密码
//sid 数据库ID void main()
{
int ret=;
//连接数据库方式三 --多个用户连接多个数据库
EXEC SQL connect:user IDENTIFIED BY :passwd AT :linkf USING :sid ;
if(sqlca.sqlcode!=)
{
ret=sqlca.sqlcode;
printf("connect1 err :%d",ret);
system("pause");
}else
{
printf("connect1 ok!\r\n");
//提交事务断开连接
EXEC SQL commit release;
printf("Oracle closed !\r\n");
//system("pause");
}
EXEC SQL connect:user IDENTIFIED BY :passwd AT :linkt USING :sid ;
if(sqlca.sqlcode!=)
{
ret=sqlca.sqlcode;
printf("connect2 err :%d",ret);
system("pause");
}else
{
printf("connect2 ok!\r\n");
//提交事务断开连接
EXEC SQL commit release;
printf("Oracle closed !\r\n");
//system("pause");
}
system("pause");
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlca.h" //这里我用的是一个用户,其实也可以是多个用户
EXEC SQL BEGIN DECLARE SECTION;
char *user="scott";
char *passwd="";
char *sid="orcl";
EXEC SQL END DECLARE SECTION; void main()
{
int ret=;
//和第三种方式不同,由oracle自动分配
EXEC SQL DECLARE linkf DATABASE;
EXEC SQL DECLARE linkt DATABASE;
//连接数据库方式四 --注意linkf不再是宿主变量,所以不需要加:
EXEC SQL connect:user IDENTIFIED BY :passwd AT linkf USING :sid ;
if(sqlca.sqlcode!=)
{
ret=sqlca.sqlcode;
printf("connect1 err :%d",ret);
system("pause");
}else
{
printf("connect1 ok!\r\n");
//提交事务断开连接
EXEC SQL commit release;
printf("Oracle closed !\r\n");
//system("pause");
}
EXEC SQL connect:user IDENTIFIED BY :passwd AT linkt USING :sid ;
if(sqlca.sqlcode!=)
{
ret=sqlca.sqlcode;
printf("connect2 err :%d",ret);
system("pause");
}else
{
printf("connect2 ok!\r\n");
//提交事务断开连接
EXEC SQL commit release;
printf("Oracle closed !\r\n");
//system("pause");
}
system("pause");
}
数据库 Proc编程二的更多相关文章
- 数据库 proc编程四
错误处理机制 当在Pro*C/C++应用程序中运行SQL语句中,Oracle会将最近执行的SQL语句的状态信息存储到状态变量SQLCODE.SQLSTATE或者SQLCA结构中. 当SQL语句执行成功 ...
- 数据库 proc编程七
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程六
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程五
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程九
第一种动态sql EXEC SQL EXECUTE IMMEDIATE :psql; .仅适用于非select语句 .嵌入SQL语句中不能包含输入宿主变量 void main() { EXEC SQL ...
- 数据库 proc编程八
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程三
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- Java Socket聊天室编程(二)之利用socket实现单聊聊天室
这篇文章主要介绍了Java Socket聊天室编程(二)之利用socket实现单聊聊天室的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在上篇文章Java Socket聊天室编程(一)之 ...
- Oracle Proc编程性能优化经验
Proc 是Oracle提供的一种数据库操作的API.它是基于ESql技术的,需要预编译后才可以变成普通c代码,非常不直观,使用起来不太方便,阅读也存在困难. 因为这些问题导致程序员平时开发中会出现一 ...
随机推荐
- kCGImagePropertyExifDictionary 引用错误
kCGImagePropertyExifDictionary 引用错误 使用 AVFoundation拍照 //获取图片 [outputImage captureStillImageAsynchron ...
- KineticJS教程(6)
KineticJS教程(6) 作者: ysm 6.拖拽 6.1.拖拽功能 要实现Kinetic对象的拖拽功能很简单,只需要将图形对象的draggable属性设为true就可以了. <script ...
- spring测试实例
我们以前要进行单元测试,必须先得到ApplicationContext对象,再通过它得到业务对象,非常麻烦,重复代码也多.基于spring3的单元测试很好的解决了这个问题 基于spring3的单元测试 ...
- jquery 图片自动切换
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- hibernate 在做更新和删除的时候一定要把事务开启
在做更新和删除的时候一定要把事务开启 在做更新和删除的时候一定要把事务开启 在做更新和删除的时候一定要把事务开启 重要的事情说三遍!!! curd之前配置文件 <property name=&q ...
- Eclipse wtp project dependent project facets问题
wtp project会编译成一个war包,但在eclipse里debug时,依赖的project没有自动编译成jar包并打包到war的lib目录里. 原因:依赖project的facets未设置或未 ...
- Oracle忘记密码找回
生活中,容易忘记Oracle数据库system用户的密码,怎么办呢,小生带你一步步重新登上Oracle ,及时你密码忘记了. 1.打开cmd窗口,输入 sqlplus / as sysdba 2.运行 ...
- linq to sql 去重复
ydc.GameScore.OrderByDescending(o => o.Score).GroupBy(ic => ic.UserPhone).Select(g => g.Fir ...
- python None 和 NaN
python原生的None和pandas, numpy中的numpy.NaN尽管在功能上都是用来标示空缺数据.但它们的行为在很多场景下确有一些相当大的差异.由于不熟悉这些差异,曾经给我的工作带来过不少 ...
- 如何在C++中调用C程序
注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反. C++和C是两种完全不同的编译链接处理方式,如果直接在C++里面调用C函数,会找不到函数体,报链接错误. 要解 ...