void jToggleButton1_actionPerformed(ActionEvent e) {
      int i;
      oneresultmd5="1978";
  for(i=0;i<1;i++)
   {
    try{
     java.security.MessageDigest alga=java.security.MessageDigest.getInstance("MD5");
     alga.update(oneresultmd5.getBytes());
     byte[] digesta=alga.digest();
     oneresultmd5=byte2hex(digesta);       }
    catch (java.security.NoSuchAlgorithmException ex)
      {
      System.out.println("非法摘要算法");
       }
  }
  jLabel2.setText(oneresultmd5);  }在另一个类中调用
    try
         {
     //连接mysql,并查询
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String usermysql="chouki";
        String passwordmysql="1211925";
        Connection  con  =  DriverManager.getConnection("jdbc:odbc:chouki",usermysql,passwordmysql );
        Statement  stmt  =  con.createStatement();
        String  sql1=  "update manager set Userpassword= '" + passwordapplet.oneresultmd5 + "', Iteration='"+ iteration + "' where List='" + list +"';";
        ResultSet  rs1 =  stmt.executeQuery(sql1);
        stmt.close();
        con.close();
          }
        catch(Exception e)
         {System.out.println(e.getMessage());}
数据库显示userpassword为null.

解决方案 »

  1.   

    alga.update(oneresultmd5.getBytes());
         byte[] digesta=alga.digest();
         oneresultmd5=byte2hex(digesta);
                         ^
    byte2hex的定义?把方法定义也发上来看看,应该是这部分的问题
      

  2.   

    public  String byte2hex(byte[] b)
       {
        String hs="";
        String stmp="";
        for (int n=0;n<b.length;n++)
         {
          stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
          if (stmp.length()==1) hs=hs+"0"+stmp;
          else hs=hs+stmp;
          if (n<b.length-1)  hs=hs+":";
         }
        return hs.toUpperCase();
       }
    这部分应该没问题,因为我已jLabel2.setText(oneresultmd5);在applet中可以得到结果.
      

  3.   

    String  sql1=  "update manager set Userpassword= '" + passwordapplet.oneresultmd5 + "', Iteration='"+ iteration + "' where List='" + list +"';";       System.out.println(sql1);
    list是多少,检查一下你的Update语句直接在mysql里执行的结果,是否更新时没用满足where List='" + list +"';"的记录。
    还有,你更新数据库前确认执行void jToggleButton1_actionPerformed(ActionEvent e) 对oneresultmd5初始化了吗
      

  4.   

    应该不是byte2hex(byte[] b)的问题,因为如果定义为public static string oneresultmd5="11111";在另一个类中就可以得到结果,数据库的userpassword=11111;一切正常.
      好像public static string oneresultmd5;得不到applet中的 oneresultmd5的值,如果相互不认(applet和jToggleButton1_actionPerformed)
    ,那么在jToggleButton1_actionPerformed中就会有定义错误.
    我真的不明白为什么?????????????????????????
      

  5.   

    1.我在void jToggleButton1_actionPerformed(ActionEvent e) 中初始化
     oneresultmd5="1978";
    2.如果是没有满足where list......,那么数据库就不会有任何改变,但事实是数据库发生了改变,在设置public static string oneresultmd5="11111";时.
      

  6.   

    不是啊,我是指更新数据库前void jToggleButton1_actionPerformed(ActionEvent e) 被触发过吗?Applet我不熟,不清楚它的机制
      

  7.   

    点击了jToggleButton1后,jLabel2.setText(oneresultmd5);可以在applet上显示其结果,证明在jToggleButton1_actionPerformed(ActionEvent e)中已赋值给了oneresultmd5.
      

  8.   

    更新数据库前void jToggleButton1_actionPerformed(ActionEvent e) 被触发过
      

  9.   

    你应该先检查更新数据前oneresultmd5的值,确定一下是否真是得不到applet中的 oneresultmd5的值
      

  10.   

    你应该先检查更新数据前oneresultmd5的值,确定一下是否真是得不到applet中的 oneresultmd5的值
      

  11.   

    你应该先检查更新数据前oneresultmd5的值,确定一下是否真是得不到applet中的 oneresultmd5的值
      

  12.   

    我可以确定void jToggleButton1_actionPerformed(ActionEvent e)中可以得到oneresultmd5的值,通过jLabel2.setText(oneresultmd5);
     可以确定如果设成public static string oneresultmd5="11111";可以在数据库中得到111111的值.
      

  13.   

    MD5是这样用的!
    public static byte[] MD5(String rStr)
      {
        try
        {
          MessageDigest md5 = MessageDigest.getInstance(Coding.MD5);
          md5.update(rStr.getBytes());
          return md5.digest();
        }catch(Exception e)
        {
          return new byte[0];
        }
      }---------------
    [email protected]