0

テーブルを参照して値を見つけ、入力した値と比較したいと考えています。

このコードは、存在するかどうかを確認し、2 つの値を比較します。

public  boolean verifer(){
    DataBase s = DataBase.getInstance();
     int numR1 =getnumR();

String req1 ="SELECT  `numR`  FROM  `reference` WHERE  `numR` =  '"+numR1+"' ";

    try {

        Statement m=  s.getConn().createStatement();
        ResultSet r1 = m.executeQuery(req1);

        int numR0 = 0;
        while (r1.next()) {

             numR0 =r1.getInt("numR");
            nbp++;   
        } 
        if(numR1==numR0){
            System.out.println("numR exists! : " +numR0 );
            verif=true;
             } 

        else { 
            System.out.println("numR is not existing ");
            verif=false;
              }

        rs1.close();
        m.close();

      } catch (SQLException e1) {
        e1.printStackTrace();
        System.out.println("error validation numR: "+e1);
        verif=false;

    } 

    return verif;
}

それらが等しい場合は、変数 maxn を +1 でインクリメントしてリクエストを挿入します。等しくない場合は、n = 1 の挿入クエリ。

public  void remplir_reference(){

    DataBase s = DataBase.getInstance();

    String req3 ;

int numR  = getnumR();
int numA  = getnumA();
int numV  = getnumV();

String type_instal= setType_instal().toString();

String categorie=comboBox_categorie.getSelectedItem().toString();

Calendar calendar =new GregorianCalendar();
calendar.setTime(new Date());
int annee =calendar.get(Calendar.YEAR);

System.out.println(annee);


if(verif==true ){
       int maxn=maXnumR();
       int maxnplus = maxn +1 ;
       System.out.println("existe");
req3 ="INSERT INTO `reference` values ('"+numR+"','"+maxnplus+"','"+cin+"','"+numA+"','"+numV+"','"+type_instal+"','"+categorie+"','"+annee+"')";


            try {

                Statement m=  s.getConn().createStatement();
                m.executeUpdate(req3);

              } catch (SQLException e1) {
                e1.printStackTrace();
                System.out.println("remplir_reference si v=vrai: "+e1);

               }

      }


 if(verif ==false) {
     System.out.println("n'existe pas");

 req3 ="INSERT INTO `reference` values ('"+numR+"',1,'"+cin+"','"+numA+"','"+numV+"','"+type_instal+"','"+categorie+"','"+annee+"')";   
        try {

            Statement m=  s.getConn().createStatement();
            m.executeUpdate(req3);

          } catch (SQLException e1) {
            e1.printStackTrace();
            System.out.println("remplir_reference si v=false: "+e1);

           }
   }

}

それは常に「存在しない」と表示され、表の値はn = 1でした

public  int maXnumR(){
    DataBase s = DataBase.getInstance();

    int numR= getnumR();


String req1 = "SELECT MAX('idrf') FROM `reference` WHERE `numR` = '"+numR+"'  ";


try {

    Statement m=  s.getConn().createStatement();
    ResultSet r1 = m.executeQuery(req1);

    while (r1.next()) {

         maxnumR =r1.getInt("idrf");
        nbp++;  
    } 

  } catch (SQLException e1) {
    e1.printStackTrace();
    System.out.println("maXnumR repetetion : "+e1);

} 

return maxnumR;
}
4

1 に答える 1

1

''numR が int のときに追加しようとしているクエリは正しくありません。

から変更する

String req1 ="SELECT  `numR`  FROM  `reference` WHERE  `numR` =  '"+numR1+"' ";

String req1 ="SELECT  numR  FROM  `reference` WHERE  numR =  "+numR1+" ";
于 2012-04-29T18:18:22.763 に答える