#include "F:\Oracle9i\precomp\public\sqlca.h " #include "iostream.h" #include <stdlib.h> EXEC SQL BEGIN DECLARE SECTION; VARCHAR username[20]; VARCHAR password[20]; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE sqlca; void sqlerror() { EXEC SQL WHENEVER SQLERROR CONTINUE; cout<<"\n Oracle error have detected!"<<endl; cout<<"\n"<< (char *)sqlca.sqlerrm.sqlerrmc<<endl; EXEC SQL ROLLBACK RELEASE; exit(-1); } int main(int argc, char* argv[]) { EXEC SQL BEGIN DECLARE SECTION; int emp_number; VARCHAR emp_name[15]; float salary; float commission; EXEC SQL END DECLARE SECTION; int total_number; strcpy(reinterpret_cast<char*>(username.arr),"scott"); username.len=strlen(reinterpret_cast<char*>(username.arr)); strcpy(reinterpret_cast<char*>(password.arr),"psusong"); password.len=strlen(reinterpret_cast<char*>(password.arr)); EXEC SQL WHENEVER SQLERROR DO sqlerror(); EXEC SQL CONNECT :username IDENTIFIED BY :password;
cout<<"I have successed in connecting to the oralce database!"<<endl; total_number=0; while(1) { emp_number=0; cout<<"Please input the employee number (0 to quit) :"; cin>>emp_number; if(emp_number==0) break; EXEC SQL SELECT ENAME,SAL,COMM INTO : emp_name,:salary,:commission FROM EMP WHERE EMPNO=: emp_number; cout<<"\n\nEmployee\tSalary\t Commission\n"; cout<<"---------------\t------------\t----------------\n"; emp_name.arr[emp_name.len]='\0'; cout<<emp_name.arr<<salary<<commission<<endl; total_number+=1; } cout<<"\n\n Total number requeried was :"<<total_number; cout<<"\nHave a good day!"<<endl;
EXEC SQL COMMIT WORK RELEASE; return 0; }--------------- 别忘了添加orasql9.lib,否则无法链接!
#include "iostream.h"
#include <stdlib.h>
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR username[20];
VARCHAR password[20];
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE sqlca;
void sqlerror()
{
EXEC SQL WHENEVER SQLERROR CONTINUE;
cout<<"\n Oracle error have detected!"<<endl;
cout<<"\n"<< (char *)sqlca.sqlerrm.sqlerrmc<<endl;
EXEC SQL ROLLBACK RELEASE;
exit(-1);
}
int main(int argc, char* argv[])
{
EXEC SQL BEGIN DECLARE SECTION;
int emp_number;
VARCHAR emp_name[15];
float salary;
float commission;
EXEC SQL END DECLARE SECTION; int total_number; strcpy(reinterpret_cast<char*>(username.arr),"scott");
username.len=strlen(reinterpret_cast<char*>(username.arr));
strcpy(reinterpret_cast<char*>(password.arr),"psusong");
password.len=strlen(reinterpret_cast<char*>(password.arr));
EXEC SQL WHENEVER SQLERROR DO sqlerror();
EXEC SQL CONNECT :username IDENTIFIED BY :password;
cout<<"I have successed in connecting to the oralce database!"<<endl; total_number=0;
while(1)
{
emp_number=0;
cout<<"Please input the employee number (0 to quit) :";
cin>>emp_number;
if(emp_number==0)
break;
EXEC SQL SELECT ENAME,SAL,COMM
INTO : emp_name,:salary,:commission
FROM EMP
WHERE EMPNO=: emp_number;
cout<<"\n\nEmployee\tSalary\t Commission\n";
cout<<"---------------\t------------\t----------------\n";
emp_name.arr[emp_name.len]='\0';
cout<<emp_name.arr<<salary<<commission<<endl;
total_number+=1;
}
cout<<"\n\n Total number requeried was :"<<total_number;
cout<<"\nHave a good day!"<<endl;
EXEC SQL COMMIT WORK RELEASE;
return 0;
}---------------
别忘了添加orasql9.lib,否则无法链接!
proc test.pc test.cpp
编译!
对出现的错误添加 extern "C"
例如:
extern void sqlcxt (void **, unsigned long *,..)
改为:
extern "C" void sqlcxt (void **, unsigned long *,..)