1

「オンライン採用システム」というプロジェクトがあります。データベース接続に問題があります。

最初に、sqlplus で引用符を使用せずにテーブル 'registration' と 'clogindetails' を作成しました。その後、すべてのデータが適切に保存されましたが、ログイン時に次のエラーが発生しました。

java.sql.SQLException: ORA-00904: PASSWORD: invalid identifier

この後、stackoverflow の複数の例を読みました。そして、データベースのテーブル項目に「二重引用符」を追加し、小文字のままにしました。

現在、データは保存されていません。「データ」タブの「オブジェクト ブラウザ」を見てみましたが、次のエラーがありました。

failed to parse SQL query:
ORA-00904: "pass": invalid identifier

私が知る限り、プロジェクトは順調に進んでいます。表を作るのに問題があるだけです。

テーブル 'clogindetails' を使用するページの 1 つからのコードを次に示します。

   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)
)
4

5 に答える 5

0

このエラーは、列名がクエリに書いているものと同じでない場合に発生します。そして、オラクルのキーワードである列名を付けないようにします。これを列名またはテーブル名にすることはできません。

于 2016-04-05T10:17:16.827 に答える
0

k 今これを試してみてください

ps=con.prepareStatement("select * from clogindetails where logid=? and pass=?");

コードの残りの部分はそのままにしておきます。

于 2013-05-06T11:37:40.183 に答える
0

ユーザー例外エラーを見ると、異なる列名を使用しているときにこのようなタイプの例外が発生していると言えます。例:データベースにテーブルを作成しました。つまり、テーブルを作成します tb_login(username varchar(10), password varchar(10));

そして私のJavaコードは

ps=con.prepareStatement("select * from tb_login where username=? and pass=?"); //error bcz pass
このコードは、私のデータベースで同じ例外 bcz を生成します。データベーススキーマとJavaコードを確認してください。または、データベース スキーマを共有します。

于 2013-05-06T09:19:17.993 に答える
0

これをやってみてください:

クエリを変更する

から:select * from clogindetails where logid=? and password=?

に:select * from clogindetails where logid='?' and password='?'

ポイントは、クエリを作成するときは、識別子を「 」で見つける必要があるということです。そうしないと、不明なテーブル列のデータ (変数) を既存の列のデータと比較しているように見えます。

例:select e.full_name from e.employees where e.full_name like '&Medet&' そうしないと、エラーが発生します。

これがあなたを助けることを願っています!

于 2014-10-31T04:59:46.273 に答える