这是原语句:
String SQL="UPDATE chengji SET xueke = '"+Txk.getText()+"',xingming='"+Txm.getText()+"',banji='"+Tbj.getText()+"',zongfen='"+Tzf.getText()+"',xuefen='"+Txf.getText()+"',Where xuehao = '"+Txh.getText()+"'";


哪里有问题????

这是数据库表中截图:



以下是这部分代码:

            public void actionPerformed(ActionEvent arg0) {/**/
// TODO Auto-generated method stub
             String driver = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/gg";
    String user = "root";
    String password = "123456";
    String xuehao=Txh.getText().trim();
    String SQL="UPDATE chengji SET xueke = '"+Txk.getText()+"',xingming='"+Txm.getText()+"',banji='"+Tbj.getText()+"',zongfen='"+Tzf.getText()+"',xuefen='"+Txf.getText()+"',Where xuehao = '"+Txh.getText()+"'";

    try {
      Class.forName(driver);
      Connection conn = DriverManager.getConnection(url, user, password);
      Statement st = conn.createStatement();
      st.executeUpdate(SQL);
                int selectedRow = table.getSelectedRow();//获得选中行的索引
                if(selectedRow!= -1)   //是否存在选中行
                {
                    //修改指定的值:
                    tableModel.setValueAt(Txk.getText(), selectedRow, 0);
                    tableModel.setValueAt(Txh.getText(), selectedRow, 1);
                    tableModel.setValueAt(Txm.getText(), selectedRow, 2);
                    tableModel.setValueAt(Tbj.getText(), selectedRow, 3);
                    tableModel.setValueAt(Tzf.getText(), selectedRow, 4);
                    tableModel.setValueAt(Txf.getText(), selectedRow, 5);
                    }
    }catch (ClassNotFoundException e2) {
System.out.println("报错"+e2.getMessage());   
 
    }
    catch (SQLException e1) {
     System.out.println("报错"+e1.getMessage());   
    }   
     }
            });

------解决思路----------------------
把数据库表的设计视图截取下来看看

------解决思路----------------------
将executeUpdate的返回值打印出来看看是不是更新了行

把sql语句打印出来,用其他工具执行一下看看,是不是正确的。

另外说说的这段编码的问题,Connection定义成局部变量,用完了也不关闭,这是要把数据库搞死啊。
查看全文
  相关解决方案