读书人

为什么此修改表数据的方法不能够修改呢

发布时间: 2011-12-29 22:09:38 作者: rapoo

为什么此修改表数据的方法不能够修改呢?请高手赐教
为什么此修改表数据的方法不能够修改呢?请高手赐教
代码如下:

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)


这么多东西,不烦吗?
好维护吗?如果将来要加一个属性怎么办?改代码吗?郁闷。。
你最好把这些东西全部封装成一个JAVABEAN,通过JAVABEAN的get和set方法来对值进行操作。

至于你说的数据全部变成“??”,是你的数据库字符编码的问题,你可以在连接数据库的时候加上字符编码解决这个问题。
像这样:
String url="jdbc:mysql://localhost/"+DB_NAME+" user="+LOGIN_NAME+"&password="+LOGIN_PASSWORD+"&characterEncoding=GBK";
characterEncoding=GBK 指定数据库字符编码为GBK。
你试试看!

读书人网 >Java Web开发

热点推荐