我有一个名为'在线招聘系统'的项目。数据库连接存在问题。
首先我在sqlplus中不使用引号制作表'registration'和'clogindetails'。 然后所有数据都用于正确保存,但在登录时我遇到了以下错误:
java.sql.SQLException: ORA-00904: PASSWORD: invalid identifier
在此之后我读了stackoverflow的多个例子。我在数据库中的表项中添加了“双引号”,并将它们保存为小写。
现在数据甚至没有保存。我试图在“数据”标签中查看“对象浏览器”,并出现以下错误:
failed to parse SQL query:
ORA-00904: "pass": invalid identifier
据我所知,该项目是可行的。只有在制作表格时才会出现问题。
以下是使用表'clogindetails'的页面之一的代码:
String usrname=getClogid();
String pass=getCpassword();
if(usrname!=null && pass!=null && usrname.length()>0 && pass.length()>0)
{
ps = con.prepareStatement("select * from clogindetails where logid=? and password=?");
ps.setString(1,usrname);
ps.setString(2,pass);
rs=ps.executeQuery();
HttpSession session=request.getSession(true);
if(!rs.next())
{
errors.add("invalid", new ActionMessage("errors.invalidusername"));
}
}
rs.close();
ps.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
if(getClogid()==null || getClogid().length()<1)
{
errors.add("logid", new ActionMessage("errors.logid.required"));
}
if(getCpassword()==null || getCpassword().length()<1)
{
errors.add("password", new ActionMessage("errors.password.required"));
}
return errors;
clogindetails的架构是
CREATE TABLE "CLOGINDETAILS"(
"ADMITID" NUMBER(15,0),
"NAME" VARCHAR2(25),
"LOGID" VARCHAR2(10),
"PASS" VARCHAR2(20)
)
答案 0 :(得分:1)
尝试这样做:
更改您的查询
来自:select * from clogindetails where logid=? and password=?
至:select * from clogindetails where logid='?' and password='?'
重点是,当您进行查询时,您应该使用''来标识您的标识符,否则您似乎正在将某些未知表列的数据(变量)与现有列中的数据进行比较。
ex:select e.full_name from e.employees where e.full_name like '&Medet&'
否则你会收到错误。
希望这会对你有帮助!
答案 1 :(得分:0)
通过查看用户异常错误,我可以说当我们使用不同的列名时会发生这种类型的异常。 对于前: 我在数据库中创建了表格,即 create table tb_login(username varchar(10),password varchar(10));
我的java代码是
ps = con.prepareStatement(“select * from tb_login where username =?and pass =?”);
//错误bcz通过
此代码将在我的数据库中生成相同的异常bcz第二列名称是密码未通过。
所以检查你的数据库架构和java代码。或者共享您的数据库架构。
答案 2 :(得分:0)
k现在试试这个
ps = con.prepareStatement(“select * from clogindetails where logid =?and pass =?”);
其余代码保持不变..
答案 3 :(得分:0)
当您的列名与查询中的列名不同时,会发生此错误。并避免给出作为oracle关键字的列名,将此组不能作为您的列名或表名。
答案 4 :(得分:0)
ORA-00904 很常见。
要克服此错误,您需要输入有效列名称。
要避免 ORA-00904 ,列名不能是保留字,并且必须包含以下四个条件才有效:
有关详细信息,请参阅此链接。
http://www.dba-oracle.com/t_ora_00904_string_invalid_identifier.htm