Yurttas/PL/DBL/oracle/F/03/PC/Printer-ins.pc
Jump to navigation
Jump to search
1/*
2REM
3REM
4REM Printer-ins.pc
5REM
6REM
7*/
8
9#include <stdio.h>
10#include <sqlca.h>
11
12#define UNAME_LEN 32
13#define PWD_LEN 16
14
15VARCHAR username[UNAME_LEN]; /* VARCHAR is an Oracle-supplied struct */
16VARCHAR password[PWD_LEN]; /* varchar can be in lower case also. */
17
18char u_name[UNAME_LEN];
19char pwd[PWD_LEN];
20
21struct {
22 char model[6];
23 char color[6];
24 char type[8];
25 int price;
26} printer;
27
28void connect_to_oracle();
29void sql_error();
30
31void main(int argc, char* argv[]) {
32 FILE *in_file;
33
34 char in_filename[32];
35
36 if(argc<2) {
37 printf("Enter the input filename : ");
38 scanf("%s", in_filename);
39 }
40 else strcpy(in_filename, argv[1]);
41
42 in_file = fopen(in_filename, "r");
43
44 if(in_file==NULL)
45 printf("File named as %s is not opened for input.\n", in_filename);
46 else {
47 connect_to_oracle();
48
49 EXEC SQL
50 WHENEVER SQLERROR DO sql_error("Error in INSERT_table: Printer");
51
52 while(fscanf(in_file,"%s%s%s%d\n",printer.model,
53 printer.color,
54 printer.type,
55 &printer.price)!=EOF){
56 EXEC SQL
57 INSERT INTO Printer
58 VALUES(:printer.model,
59 :printer.color,
60 :printer.type,
61 :printer.price);
62 }
63 }
64
65 EXEC SQL COMMIT WORK RELEASE;
66
67 exit(0);
68}
69
70
71void sql_error(char* msg) {
72 char err_msg[128];
73 int buflen, msglen;
74
75 EXEC SQL WHENEVER SQLERROR CONTINUE;
76
77 printf("%s \n", msg);
78 buflen = sizeof(err_msg);
79 sqlglm(err_msg, &buflen, &msglen);
80 printf("%.*s \n", msglen, err_msg);
81 exit(1);
82}
83
84
85void connect_to_oracle() {
86 /* get your username/passwd from "user_pwd.txt" file */
87
88 FILE *in_file;
89 in_file = fopen("user_pwd.txt", "r");
90 fscanf(in_file, "%s", u_name);
91 fscanf(in_file, "%s", pwd);
92
93 strncpy((char *) username.arr, u_name, UNAME_LEN);
94 username.len = strlen((char *) username.arr);
95
96 strncpy((char *) password.arr, pwd, PWD_LEN);
97 password.len = strlen((char *) password.arr);
98
99 EXEC SQL WHENEVER SQLERROR DO sql_error ("ORACLE error-- ");
100 EXEC SQL CONNECT :username IDENTIFIED BY :password;
101
102 printf("application is done\n");
103}