怎么用C语言实现下列SQL语句

Python019

怎么用C语言实现下列SQL语句,第1张

sql和高级语言没关系的,不同数据库sql可能会有点区别。eg:oracle

mysql

sql

server等等。

高级语言(Java

C++

C)调用数据库都是驱动不同而已,sql语句都是相同的。

你真是牛人呀。数据库类型那么多,有oracle mysql DB2 SQL SQLsevera。你使用的那种。

相对于来说我使用oracle多。

给你一个pro*c的操作实例吧

/ 定义符号常数

#define USERNAME "SCOTT"

#define PASSWORD "x"

#include <stdio.h>

// 说明SQLCA和ORACA

EXEC SQL INCLUDE SQLCA

EXEC SQL INCLUDE ORACA

// 启用ORACLE通讯区:ORACA=YES,使它能被使用

EXEC ORACLE OPTION (ORACA=YES)

// 说明SQL变量

EXEC SQL BEGIN DECLARE SECTION

char* username=USERNAME

char* password=PASSWORD

VARCHAR sqlstmt[80]

int emp_number

VARCHAR emp_name[15]

VARCHAR job[50],job1[50],job2[50]

float salary

EXEC SQL END DECLARE SECTION

main()

{

EXEC SQL WHENEVER SQLERROR GOTO sqlerror

// 发生错误时,保存SQL语句至ORACA

oraca.orastxtf=ORASTFERR

// 登录到ORACLE

EXEC SQL CONNECT :username IDENTIFIED BY :password

printf("/nConnect to ORACLE./n")

// 构造动态SQL语句

sqlstmt.len=sprintf(sqlstmt.arr,"INSERT INTO EMP(EMPNO,ENAME,JOB,SAL)VALUES(:V1,:V2,:V3,:V4)")

// 显示SQL语句

puts(sqlstmt.arr)

// 用PREPARE语句分析当前的动态INSERT语句,语句名是S

EXEC SQL PREPARE S FROM :sqlstmt

// 循环插表

for()

{

printf("/nEnter employee number:")

scanf("%d",&emp_number)

if(emp_number==0)break

printf("/nEnter employee name:")

scanf("%s",&emp_name.arr)

emp_name.len=strlen(emp_name.arr)

printf("/nEnter employee job:")

scanf("%s",&job.arr)

job.len=strlen(job.arr)

salary = 0// With VC6, Missing this line will cause C Run-Time Error R6002.

printf("/nEnter salary:")

scanf("%f",&salary)

EXEC SQL EXECUTE S USING :emp_number,:emp_name,:job,:salary

}

// 提交事务,退出ORACLE

EXEC SQL COMMIT RELEASE

printf("/nHave a good day!/n")

exit(0)

sqlerror:

// 打印错误信息

printf("/n%.*s/n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc)

// 打印出错SQL语句

printf("/n/"%.*s.../"/n",oraca.orastxt.orastxtl,oraca.orastxt.orastxtc)

// 打印出错SQL语句所在行号及所在文件名

printf("on line %d of %.*s/n/n",oraca.oraslnr,

oraca.orasfnm.orasfnml,oraca.orasfnm.orasfnmc)

// 回滚事务,退出ORACLE

EXEC SQL WHENEVER SQLERROR CONTINUE

EXEC SQL ROLLBACK RELEASE

exit(1)

}