?? pro_modify.c
字號:
/* Result Sets Interface */
#ifndef SQL_CRSR
# define SQL_CRSR
struct sql_cursor
{
unsigned int curocn;
void *ptr1;
void *ptr2;
unsigned long magic;
};
typedef struct sql_cursor sql_cursor;
typedef struct sql_cursor SQL_CURSOR;
#endif /* SQL_CRSR */
/* Thread Safety */
typedef void * sql_context;
typedef void * SQL_CONTEXT;
/* Object support */
struct sqltvn
{
unsigned char *tvnvsn;
unsigned short tvnvsnl;
unsigned char *tvnnm;
unsigned short tvnnml;
unsigned char *tvnsnm;
unsigned short tvnsnml;
};
typedef struct sqltvn sqltvn;
struct sqladts
{
unsigned int adtvsn;
unsigned short adtmode;
unsigned short adtnum;
sqltvn adttvn[1];
};
typedef struct sqladts sqladts;
static struct sqladts sqladt = {
1,1,0,
};
/* Binding to PL/SQL Records */
struct sqltdss
{
unsigned int tdsvsn;
unsigned short tdsnum;
unsigned char *tdsval[1];
};
typedef struct sqltdss sqltdss;
static struct sqltdss sqltds =
{
1,
0,
};
/* File name & Package Name */
struct sqlcxp
{
unsigned short fillen;
char filnam[68];
};
static const struct sqlcxp sqlfpn =
{
67,
"F:\\數(shù)據(jù)庫\\課程設(shè)計\\課程設(shè)計zhu\\server1.2\\systemModify\\pro_modify.pc"
};
static unsigned long sqlctx = 1337188707;
static struct sqlexd {
unsigned int sqlvsn;
unsigned int arrsiz;
unsigned int iters;
unsigned int offset;
unsigned short selerr;
unsigned short sqlety;
unsigned int occurs;
const short *cud;
unsigned char *sqlest;
const char *stmt;
sqladts *sqladtp;
sqltdss *sqltdsp;
void **sqphsv;
unsigned int *sqphsl;
int *sqphss;
void **sqpind;
int *sqpins;
unsigned int *sqparm;
unsigned int **sqparc;
unsigned short *sqpadto;
unsigned short *sqptdso;
void *sqhstv[5];
unsigned int sqhstl[5];
int sqhsts[5];
void *sqindv[5];
int sqinds[5];
unsigned int sqharm[5];
unsigned int *sqharc[5];
unsigned short sqadto[5];
unsigned short sqtdso[5];
} sqlstm = {10,5};
/* SQLLIB Prototypes */
extern void sqlcxt (void **, unsigned long *,
struct sqlexd *, const struct sqlcxp *);
extern void sqlcx2t(void **, unsigned long *,
struct sqlexd *, const struct sqlcxp *);
extern void sqlbuft(void **, char *);
extern void sqlgs2t(void **, char *);
extern void sqlorat(void **, unsigned long *, void *);
/* Forms Interface */
static const int IAPSUCC = 0;
static const int IAPFAIL = 1403;
static const int IAPFTL = 535;
extern void sqliem(char *, int *);
static const char *sq0007 =
"select * from Provider where ID=:b0 ";
static const char *sq0011 =
"select ID from Provider where ID=:b0 ";
typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;
typedef struct { unsigned short len; unsigned char arr[1]; } varchar;
/* cud (compilation unit data) array */
static const short sqlcud0[] =
{10,4130,852,0,0,
5,0,0,1,50,0,3,80,0,0,5,5,0,1,0,1,97,0,0,1,97,0,0,1,97,0,0,1,97,0,0,1,97,0,0,
40,0,0,2,0,0,29,82,0,0,0,0,0,1,0,
55,0,0,3,0,0,32,89,0,0,0,0,0,1,0,
70,0,0,4,35,0,2,137,0,0,1,1,0,1,0,1,97,0,0,
89,0,0,5,0,0,29,138,0,0,0,0,0,1,0,
104,0,0,6,0,0,31,149,0,0,0,0,0,1,0,
119,0,0,7,47,0,9,213,0,0,1,1,0,1,0,1,97,0,0,
138,0,0,7,0,0,13,224,0,0,5,0,0,1,0,2,97,0,0,2,97,0,0,2,97,0,0,2,97,0,0,2,97,0,
0,
173,0,0,7,0,0,15,241,0,0,0,0,0,1,0,
188,0,0,8,72,0,5,322,0,0,5,5,0,1,0,1,97,0,0,1,97,0,0,1,97,0,0,1,97,0,0,1,97,0,
0,
223,0,0,9,0,0,29,324,0,0,0,0,0,1,0,
238,0,0,10,0,0,31,335,0,0,0,0,0,1,0,
253,0,0,11,48,0,9,352,0,0,1,1,0,1,0,1,97,0,0,
272,0,0,11,0,0,13,356,0,0,1,0,0,1,0,2,97,0,0,
};
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlca.h>
#include <process.h>
extern bus_modifyMenu();
int insert_pro(char* tID,char* tName,char* tAddress,char* tTel,char* tIntro);
void menu_insert_pro();
extern int error();
int delete_pro( char* tID );
void menu_delete_pro();
int query_pro(char* tID);
void menu_query_pro();
void menu_update_pro();
int update_pro( char* tID,char* tName,char* tAddress,char* tTel,char* tIntro );
void bus_Menu();
int query_proID_unique(char* tID);
extern int query_proID_unique(char* tID);
void menu_insert_pro()
{
char t,m;
char ID[10];
char Name[20];
char Address[30];
char Tel[16];
char Intro[100];
while(1)
{
printf("\t\t添加供應(yīng)商信息\n\n");
printf("請錄入供應(yīng)商信息:\n\n");
printf("\t供應(yīng)商號->");
scanf("%s",ID);
if( query_proID_unique(ID) ){
printf("供應(yīng)商號%s已經(jīng)存在,請選擇另外的供應(yīng)商號或者輸入n退出\n",ID);
fflush(stdin);
m=getchar();
if(m=='N'||m=='n') break;
else continue;
}/*if*/ else{
printf("\t供應(yīng)商名->");
scanf("%s",Name);
printf("\t地址->");
scanf("%s",Address);
printf("\t電話->");
scanf("%s",Tel);
printf("\t簡介->");
scanf("%s",Intro);
printf("\n");
fflush(stdin);
if(!insert_pro(ID,Name,Address,Tel,Intro))
printf("成功添加供應(yīng)商信息!");
else printf("ERROR:(menu_insert_pro)");
}/*while*/
printf("繼續(xù)添加?(Y/N)");
t=getchar();
if(t=='N'||t=='n')break;
}
bus_modifyMenu();
}/*menu_insert_pro()*/
int insert_pro(char* tID,char* tName,char* tAddress,char* tTel,char* tIntro)
{
/* EXEC SQL BEGIN DECLARE SECTION; */
char ID[10];
char Name[20];
char Address[30];
char Tel[16];
char Intro[100];
/* EXEC SQL END DECLARE SECTION; */
strcpy(ID,tID);
strcpy(Name,tName);
strcpy(Address,tAddress);
strcpy(Tel,tTel);
strcpy(Intro,tIntro);
/* EXEC SQL INSERT INTO Provider
VALUES(:ID,:Name,:Address,:Tel,:Intro); */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "insert into Provider values (:b0,:b1,:b2,:b3,:b4)";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )5;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)ID;
sqlstm.sqhstl[0] = (unsigned int )10;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)Name;
sqlstm.sqhstl[1] = (unsigned int )20;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)Address;
sqlstm.sqhstl[2] = (unsigned int )30;
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = ( void *)Tel;
sqlstm.sqhstl[3] = (unsigned int )16;
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( void *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned int )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = ( void *)Intro;
sqlstm.sqhstl[4] = (unsigned int )100;
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( void *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned int )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto error;
}
/* EXEC SQL COMMIT; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )40;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto error;
}
return 0;
error:
printf("ERROR:(insert_pro)");
/* EXEC SQL WHENEVER SQLERROR CONTINUE; */
printf("\nORACLE error detected:\n");
printf("\n%.70s\n",sqlca.sqlerrm.sqlerrmc);
/* EXEC SQL ROLLBACK RELEASE; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )55;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
return 1;
}/*insert_pro()*/
void menu_delete_pro()
{
char t;
char ID[10];
while(1)
{
printf("\t\t刪除供應(yīng)商信息\n\n");
printf("請錄入預(yù)刪除的供應(yīng)商號:\n\n");
printf("\t供應(yīng)商號->");
scanf("%s",ID);
fflush(stdin);
if( query_pro( ID ) )
printf("WARING:(munu_delete_pro)Provider %s does not exist.\t\n\n",ID);
else
if( !delete_pro( ID ) )
printf("成功刪除供應(yīng)商號為%s的信息!",ID);
else printf("WARING:(delete_pro)Provider %s does not exist.\t",ID);
/* else continue; */
printf("還要刪除嗎?(Y/N)");
t=getchar();
if(t=='N'||t=='n')break;
}
bus_modifyMenu();
}/*menu_delete_pro()*/
int delete_pro( char* tID)
{
/* EXEC SQL BEGIN DECLARE SECTION; */
char seekID[10];
/* EXEC SQL END DECLARE SECTION; */
/* char ID[10];
char Name[20];
char Address[30];
char Tel[16];
char Intro[100];*/
strcpy(seekID,tID);
/* EXEC SQL WHENEVER SQLERROR GOTO sqlerr; */
/* EXEC SQL WHENEVER NOT FOUND GOTO notfound; */
/* EXEC SQL DELETE FROM Provider WHERE ID=:seekID; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "delete from Provider where ID=:b0";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )70;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)seekID;
sqlstm.sqhstl[0] = (unsigned int )10;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto sqlerr;
}
/* EXEC SQL COMMIT; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )89;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) goto sqlerr;
}
printf("%s dropped.\n",seekID);
return 0;
notfound:
printf("WARING:999Provider %s does not exist.\t",seekID);
return -1;
sqlerr:
printf("%70s\n",sqlca.sqlerrm.sqlerrmc);
/* EXEC SQL WHENEVER SQLERROR CONTINUE; */
/* EXEC SQL ROLLBACK; */
{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 5;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )104;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
}
return -1;
/* EXEC SQL DECLARE del_pro SCROLL CURSOR FOR
SELECT ID,Name,Address,Tel,Intro FROM Provider WHERE ID=:seekID FOR UPDATE;
EXEC SQL OPEN del_pro;
EXEC SQL WHENEVER NOT FOUND DO BREAK;
EXEC SQL FETCH FIRST del_pro INTO :ID,:Name,:Address,:Tel,:Intro;
EXEC SQL DELETE FROM Provider WHERE CURRENT OF del_pro;*/
/* EXEC SQL PREPARE stat FROM
'DELETE Provider WHERE ID=:a';
EXEC SQL EXECUTE stat USING :ID;*/
/* EXEC SQL WHENEVER SQLERROR DO error();
EXEC SQL DELETE FROM Provider
WHERE ID=:ID;*/
/* EXEC SQL COMMIT;
EXEC SQL CLOSE del_pro;
return 0; */
}/*delete_pro(...)*/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -