以下是我的部分源代码:登陆数据库:EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbname;查询记录:void found()
{
EXEC SQL BEGIN DECLARE SECTION; char user_ID[15];
int user_hp=0;
char user_EQUIP01[10];
char user_EQUIP02[10];
char user_EQUIP03[10];
EXEC SQL VAR user_ID IS STRING(16); EXEC SQL VAR user_EQUIP01 IS STRING(11); EXEC SQL VAR user_EQUIP02 IS STRING(11); EXEC SQL VAR user_EQUIP03 IS STRING(11); EXEC SQL END DECLARE SECTION; memset(user_ID, 0, sizeof(user_ID);
memset(user_EQUIP01, 0, sizeof(user_EQUIP01);
memset(user_EQUIP02, 0, sizeof(user_EQUIP02);
memset(user_EQUIP03, 0, sizeof(user_EQUIP03);
cout<<endl<<"请输入玩家的ID号: ";
gets(user_ID);
gets(user_ID); if(!strcmp(user_ID," "))
{
cout<<endl;
return;
}
EXEC SQL WHENEVER SQLERROR GOTO sqlerror; EXEC SQL WHENEVER NOT FOUND GOTO notfound; EXEC SQL SELECT "SNAKER9527"."PLAYERINF"."USERID","SNAKER9527"."PLAYERINF"."HP","SNAKER9527"."PLAYERINF"."EQUIP01","SNAKER9527"."PLAYERINF"."EQUIP02","SNAKER9527"."PLAYERINF"."EQUIP03"
INTO :user_ID, :user_hp, :user_EQUIP01, :user_EQUIP02, :user_EQUIP03
FROM "SNAKER9527"."PLAYERINF"
WHERE "SNAKER9527"."PLAYERINF"."USERID" = :user_ID; cout<<endl<<"USERID: "<<user_ID<<" HP: "<<user_hp<<" EQUIP01: "<<user_EQUIP01<<" EQUIP02: "<<user_EQUIP02<<" EQUIP03: "<<user_EQUIP03<<endl;
return;notfound:
cout<<endl<<user_ID<<"NOT FOUND!"<<endl;
return;
sqlerror:
cout<<endl<<sqlca.sqlerrm.sqlerrmc;
EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL ROLLBACK; exit(1);
}执行结果:(DOS界面下)请输入ID号: kalauserid: kala hp: 0 equip01: 0000000000烫烫烫烫烫 equip02: 0000000000烫烫烫烫烫
equip03: 0000000000烫烫烫烫烫 equip04: 0000000000烫烫烫烫烫
equip05: 0000000000烫烫烫烫烫 equip06: 0000000000烫烫烫烫烫
equip07: 0000000000烫烫烫烫烫 equip08: 0000000000烫烫烫烫烫我想问这是什么原因造成的?是因为Proc中的SQL根本就没执行吗?可我在Oracle的SQL控制台中执行是没问题的;还是我的.NET没有连到Oracle数据库,如果没联上他应该会有提示的,而且连接时也会有防火墙提示,到底是什么原因呢?该如何解决,请大虾们告诉我,上面等着用,我非常着急,谢谢!
{
EXEC SQL BEGIN DECLARE SECTION; char user_ID[15];
int user_hp=0;
char user_EQUIP01[10];
char user_EQUIP02[10];
char user_EQUIP03[10];
EXEC SQL VAR user_ID IS STRING(16); EXEC SQL VAR user_EQUIP01 IS STRING(11); EXEC SQL VAR user_EQUIP02 IS STRING(11); EXEC SQL VAR user_EQUIP03 IS STRING(11); EXEC SQL END DECLARE SECTION; memset(user_ID, 0, sizeof(user_ID);
memset(user_EQUIP01, 0, sizeof(user_EQUIP01);
memset(user_EQUIP02, 0, sizeof(user_EQUIP02);
memset(user_EQUIP03, 0, sizeof(user_EQUIP03);
cout<<endl<<"请输入玩家的ID号: ";
gets(user_ID);
gets(user_ID); if(!strcmp(user_ID," "))
{
cout<<endl;
return;
}
EXEC SQL WHENEVER SQLERROR GOTO sqlerror; EXEC SQL WHENEVER NOT FOUND GOTO notfound; EXEC SQL SELECT "SNAKER9527"."PLAYERINF"."USERID","SNAKER9527"."PLAYERINF"."HP","SNAKER9527"."PLAYERINF"."EQUIP01","SNAKER9527"."PLAYERINF"."EQUIP02","SNAKER9527"."PLAYERINF"."EQUIP03"
INTO :user_ID, :user_hp, :user_EQUIP01, :user_EQUIP02, :user_EQUIP03
FROM "SNAKER9527"."PLAYERINF"
WHERE "SNAKER9527"."PLAYERINF"."USERID" = :user_ID; cout<<endl<<"USERID: "<<user_ID<<" HP: "<<user_hp<<" EQUIP01: "<<user_EQUIP01<<" EQUIP02: "<<user_EQUIP02<<" EQUIP03: "<<user_EQUIP03<<endl;
return;notfound:
cout<<endl<<user_ID<<"NOT FOUND!"<<endl;
return;
sqlerror:
cout<<endl<<sqlca.sqlerrm.sqlerrmc;
EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL ROLLBACK; exit(1);
}执行结果:(DOS界面下)请输入ID号: kalauserid: kala hp: 0 equip01: 0000000000烫烫烫烫烫 equip02: 0000000000烫烫烫烫烫
equip03: 0000000000烫烫烫烫烫 equip04: 0000000000烫烫烫烫烫
equip05: 0000000000烫烫烫烫烫 equip06: 0000000000烫烫烫烫烫
equip07: 0000000000烫烫烫烫烫 equip08: 0000000000烫烫烫烫烫我想问这是什么原因造成的?是因为Proc中的SQL根本就没执行吗?可我在Oracle的SQL控制台中执行是没问题的;还是我的.NET没有连到Oracle数据库,如果没联上他应该会有提示的,而且连接时也会有防火墙提示,到底是什么原因呢?该如何解决,请大虾们告诉我,上面等着用,我非常着急,谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货