日期:2014-05-18  浏览次数:20673 次

为什么此修改表数据的方法不能够修改呢?请高手赐教
为什么此修改表数据的方法不能够修改呢?请高手赐教
代码如下:
Java code
    
        /**
     * 修改员工信息
     * @param name
     * @param age
     * @param sex
     * @param position
     * @param salary
     * @param birthday
     * @throws Exception
     */
    public void modifyInfo(String name,int age,String sex,String position,float salary,
            java.sql.Date birthday)throws Exception{
        Connection con=null;
        PreparedStatement prepStmt=null;
        //ResultSet rs=null;
        employees=new ArrayList();
        try{
            con=getConnection();
            String sql="update employees set name=?,age=?,sex=?,position=?,salary=?,birthday=? where name=?";
            prepStmt=con.prepareStatement(sql);
            prepStmt.setString(1, name);
            prepStmt.setInt(2, age);
            prepStmt.setString(3, sex);
            prepStmt.setString(4, position);
            prepStmt.setFloat(5, salary);
            prepStmt.setDate(6, birthday);
            prepStmt.setString(7, name);
            prepStmt.executeUpdate();
            prepStmt.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        finally{
            //closeResultSet(rs);
            closeConnection(con);
        }
    }



------解决方案--------------------
不抛异常的话就是修改没有提交。
手动调用一下commit试一试,还不行就检查一下connection的配置
------解决方案--------------------
name?username?
我去睡觉了,lz珍重
------解决方案--------------------
应该是编码的问题没错,呵呵,数据库方面的中文编码问题偶也不是很懂,纯帮你顶一下
------解决方案--------------------
请问lz方法中的参数是否为页面传过来的,是否使用了jsp,建议lz对中文使用一下字符转换的方法,把uft-8转换成gbk,如果使用了struts则可以配置一下过滤器,乱码方法很好解决的,实在不行可以去网上找找啊,很多的
------解决方案--------------------
如果是jsp页面传过来的有过滤器的话就没什么问题
我估计你是没有经过jsp页面直接服务器传的,所以就多转了一次
你只要把接过来的都转一次码就可以了
------解决方案--------------------
我估计不是编码的原因,看这两句:
String sql="update employees set name=?,age=?,sex=?,position=?,salary=?,birthday=? where name=?";
String sql="update employees set name=?,age=?,sex=?,position=?,salary=?,birthday=? where username=?";
前面的sql,更新的条件用的是name;后面的sql更新的条件是username。
可能就是前面的sql没有找到合适的记录,所以就没有修改期望的记录。
楼主的程序本身并没有错,是sql的缘故

------解决方案--------------------
从网上找个过滤器可以防止乱码
------解决方案--------------------
是编码问题,
给你一个函数把中文处理一下:
 public String format2IS08859(String str) {
try {
if (str == null || str.trim().equals(""))
str = "";
else
str = new String(str.getBytes("ISO8859-1"));

} catch (Exception e) {
e.printStackTrace();
}
return str;
}
------解决方案--------------------
不是程序的问题,lz最开始的程序应该是自己没有写对巴,后来改了,是编码问题。把页面发送的数据和数据库的字符集统一起来就可以了,必要的话设置一个filter,将页面提交的数据统统转化。
------解决方案--------------------
不是程序的问题,lz最开始的程序应该是自己没有写对巴,后来改了,是编码问题。把页面发送的数据和数据库的字符集统一起来就可以了,必要的话设置一个filter,将页面提交的数据统统转化。
------解决方案--------------------
我还是第一次见有人这样写代码的。
public void modifyInfo(String name,int age,String sex,String position,float salary,
java.sql.Date birthday,String username)