java setString()不工作

java setString()不工作,java,jdbc,Java,Jdbc,所以我想将这些变量插入到准备好的语句中,但是我得到了一个错误。将这些JOptionPanes添加到debug后,程序显示“5”,然后显示“4”,然后显示“error1”。我想这意味着 ps.setString(2,性别);无法执行。然而,我找不到哪里弄错了。有人能帮忙吗?删除问号周围的引号。否则,“?”将被解释为带有单个问号的字符串文字: try{is = new FileInputStream(new File(s)); PreparedStatement ps;

所以我想将这些变量插入到准备好的语句中,但是我得到了一个错误。将这些JOptionPanes添加到debug后,程序显示“5”,然后显示“4”,然后显示“error1”。我想这意味着
ps.setString(2,性别);无法执行。然而,我找不到哪里弄错了。有人能帮忙吗?

删除问号周围的引号。否则,
“?”
将被解释为带有单个问号的字符串文字:

try{is = new FileInputStream(new File(s));
        PreparedStatement ps; 
        ps= cn.prepareStatement("Update instructor set name ='?' ,gender ='?', image ='?' where instructorID =?");
          JOptionPane.showMessageDialog(null, "5");
        ps.setString(1,name);
          JOptionPane.showMessageDialog(null, "4");
            ps.setString(2,gender);
            JOptionPane.showMessageDialog(null, "3");
            ps.setBlob(3, is);
            JOptionPane.showMessageDialog(null, "2");
          ps.setString(4, iden);
          JOptionPane.showMessageDialog(null, "1");
            ps.executeUpdate();
            JOptionPane.showMessageDialog(null, "successfully updated");
        }catch(Exception e ){
            JOptionPane.showMessage(null,"error1");
        }

目前,JDBC认为您的查询只有一个参数,对应于末尾的问号。试图设置参数2会导致异常。

删除问号周围的引号。否则,
“?”
将被解释为带有单个问号的字符串文字:

try{is = new FileInputStream(new File(s));
        PreparedStatement ps; 
        ps= cn.prepareStatement("Update instructor set name ='?' ,gender ='?', image ='?' where instructorID =?");
          JOptionPane.showMessageDialog(null, "5");
        ps.setString(1,name);
          JOptionPane.showMessageDialog(null, "4");
            ps.setString(2,gender);
            JOptionPane.showMessageDialog(null, "3");
            ps.setBlob(3, is);
            JOptionPane.showMessageDialog(null, "2");
          ps.setString(4, iden);
          JOptionPane.showMessageDialog(null, "1");
            ps.executeUpdate();
            JOptionPane.showMessageDialog(null, "successfully updated");
        }catch(Exception e ){
            JOptionPane.showMessage(null,"error1");
        }

目前,JDBC认为您的查询只有一个参数,对应于末尾的问号。试图设置参数2会导致异常。

请打印异常。使用
e.printStackTrace()
显示异常。看到“error1”时,您不会知道发生了什么。请打印异常。使用
e.printStackTrace()
显示异常。看到“error1”,你就不会知道发生了什么。