您的位置:首页 > 数据库 > Oracle

使用Pro *C连接Oracle 数据库

2009-02-22 23:51 344 查看
Oracle 公司提供几种外连数据库的方法,JDBC, ODBC, OCI, OCCI, Proc *系列语言等.因此Oracle 可以能过Pro *C连接.连接方法如下:

先看一下Oracle 提供的官方文档[Connect to database]部分:
EXEC SQL CONNECT { :user IDENTIFIED BY :oldpswd | :usr_psw }
[[ AT { dbname | :host_variable }] USING :connect_string ]
[ {ALTER AUTHORIZATION :newpswd  |  IN { SYSDBA | SYSOPER } MODE} ] ;

:user=================>说明登陆的用户名。

:oldpswd==============>说明用户的登陆密码。

:dname===============>说明连接的标识串。(用于连接多个数据库时标识)

:connect_string=========>说明连接的Oracle服务器名。

:newpswd=============>说明连接时并修改用户密码为该新密码。(每次连接数据库时需要改密码时)

IN ???? MODE===========>指定用户的登陆模式。(系统用户登陆时需要使用)

接下来用程序来说明各数据库的登陆实现:

1.通过指定:user为“username/passwd@servicename"

#include <iostream>
#include <sqlca.h>
using namespace std;

/* 声明SQL变量部分 */
EXEC SQL BEGIN DECLARE SECTION;
char *uid = "scott/tiger@orcl";
EXEC SQL END DECLARE SECTION;

int main()
{
EXEC SQL CONNECT :uid; /* 连接ORACLE 数据库 */
if(sqlca.sqlcode!=0)/* 连接成功 */
cout << sqlca.sqlerrm.sqlerrmc<<endl;
else
cout << "success!!!" <<endl;
return 0;
}

2.通过声明SQL变量char *实现

#include <iostream>
#include <sqlca.h>
using namespace std;

EXEC SQL BEGIN DECLARE SECTION;
char *p_uname = "scott";
char *p_passwd= "tiger";
char *p_service = "orcl";
EXEC SQL END DECLARE SECTION;

int main()
{
EXEC SQL CONNECT :p_uname IDENTIFIED BY :p_passwd USING :p_service;
if(sqlca.sqlcode!=0)
cout << sqlca.sqlerrm.sqlerrmc << endl;
else
cout << "success!!" << endl;
return 0;
}

3.通过声明SQL变量数组char []实现

#include <iostream>
#include <sqlca.h>
using namespace std;

EXEC SQL BEGIN DECLARE SECTION;
char uname[20];
char passwd[20];
char service[20];
EXEC SQL END DECLARE SECTION;

int main()
{
cout << "please input username : ";
cin >> uname;

cout << "please input passwd : ";
cin >> passwd;

cout << "please service name : ";
cin >> service;

EXEC SQL CONNECT :uname IDENTIFIED BY :passwd USING :service IN SYSDBA MODE;
if(sqlca.sqlcode!=0)
cout << sqlca.sqlerrm.sqlerrmc << endl;
else
cout << "success!!" << endl;
return 0;
}

4.通过声明SQL变量VARCHAR可变长字符串实现

#include <iostream>
#include <sqlca.h>
using namespace std;

EXEC SQL BEGIN DECLARE SECTION;
VARCHAR uname[20];
VARCHAR passwd[20];
VARCHAR service[20];
EXEC SQL END DECLARE SECTION;

int main()
{
cout << "please input username : ";
cin >> uname.arr;

cout << "please input passwd : ";
cin >> passwd.arr;

cout << "please service name : ";
cin >> service.arr;

uname.len=strlen((char *)uname.arr);
passwd.len=strlen((char *)passwd.arr);
service.len=strlen((char *)service.arr);

EXEC SQL CONNECT :uname IDENTIFIED BY :passwd USING :service IN SYSDBA MODE;
if(sqlca.sqlcode!=0)
cout << sqlca.sqlerrm.sqlerrmc << endl;
else
cout << "success!!" << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: