[Microsoft][ODBC SQL Server Driver][SQL Server]列名 '大大' 无效。
2011-4-22 15:01:22 org.apache.struts.chain.commands.AbstractExceptionHandler execute
警告: Unhandled exception
java.lang.NullPointerException
at com.dao.UserDAO.UpdateUser(UserDAO.java:156)
at com.action.UserAction.ModifyUser(UserAction.java:117)
at com.action.UserAction.execute(UserAction.java:39)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.action.CharFilter.doFilter(CharFilter.java:27)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)
2011-4-22 15:01:22 org.apache.struts.chain.commands.ExceptionCatcher postprocess这里说列名无效,可是这个'大大'是值啊,不是列名,列名是username,我向数据库插入数据是正常,可是要修改数据的时候就报这个异常,下面是修改用户信息的部分代码
/*更新用户信息*/
public boolean UpdateUser(UserForm userForm){
/*首先查询该用户名称系统中是否已经存在*/
ChStr chStr = new ChStr();
String sql = "SELECT * FROM userinfo where username='"
+ chStr.filterStr(userForm.getUsername()) + "' and username<>" + userForm.getUsername();
ResultSet rs = conn.executeQuery(sql);
try {
/* 如果存在该用户的记录 */
if (rs.next()) {
this.errMessage = "该用户已经存在!";
return false;
}  
} catch (SQLException ex) {
this.errMessage = "查询用户发生了错误!";
return false;
} finally {
conn.close();


StringBuffer sb = new StringBuffer();
sb.append("update userinfo set username='");
sb.append(userForm.getUsername()).append("',password='");
sb.append(userForm.getPassword()).append("',userDes='");
sb.append(userForm.getUserDes()).append("' where username=").append(userForm.getUsername());
System.out.println("修改用户信息时的SQL:"+sb.toString());
boolean ret=conn.executeUpdate(sb.toString())>0;
if(ret == false) {
this.errMessage = "修改用户信息时发生了错误!";
return false;
}
    return true;
}
和修改操作的jsp页面
<%@ page contentType="text/html; charset=gb2312" language="java"%>
<%@ page import="com.actionForm.UserForm;"%>
<%
UserForm userForm = (UserForm) request.getAttribute("userForm");
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>无标题页</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<script>   
    function checkForm(form){
if(form.username.value==""){
alert("请输入用户姓名!");form.username.focus();return false;
}
if(form.userdes.value==""){
alert("请输入用户权限!");form.userdes.focus();return false;
}

}
</script>
</head>
<body> <form id="Form1" method="post" action="UserAction.do?action=modify">
<input type="hidden" name="username"
value="<%=userForm.getUsername() %>" />
<table width="600" border="0" cellpadding="0" cellspacing="0"
align="center">
<tr style="color: blue; font-size: 14px;">
<td style="height: 14px; width: 502px;">
<img src="images/edit.gif" width="14px" height="14px">
系统管理--&gt;修改用户信息
</td>
</tr>
<tr>
<td style="height: 42px">
<br />
用户姓名:
<input name="username" type="text" id="username" size="20"
value="<%=userForm.getUsername() %>">
<br />
<br />
密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码:
<input name="password" type="text" id="password" size="20"
value="<%=userForm.getPassword() %>">
<br />
<br />
用户权限:
<input name="userdes" type="text" id="userdes" size="20"
value="<%=userForm.getUserDes() %>">
<br />
<br /> &nbsp;
<input type="submit" value="修改" onclick="return checkForm(Form1);">
</td>
</tr>
</table>
&nbsp;&nbsp; </form>
</body>
</html>

解决方案 »

  1.   

    String sql = "SELECT * FROM userinfo where username='"
    + chStr.filterStr(userForm.getUsername()) + "' and username<>'" + userForm.getUsername() +"'";
      

  2.   

    at com.dao.UserDAO.UpdateUser(UserDAO.java:156)
    at com.action.UserAction.ModifyUser(UserAction.java:117)UserDAO的156行,
    UserAction的117行,
    UserAction的39行,
    出错。然后调试下,就应该知道是什么错误了!!!
      

  3.   

    自己DEBUG 跟踪 看是查询时SQL出错 还是 更新时拼的SQL有问题
      

  4.   

    ResultSet rs = conn.executeQuery(sql);  LZ你的conn那里来的啊  代码上没看见呢  就算是有的话 是不是Connection的实例啊  如果是的话不能这样写哦  
    应该是 Statement的实例来调用执行查询或更新的操作哦 
      

  5.   

    我都是觉得是这里出的错String sql = "SELECT * FROM userinfo where username='"
    + chStr.filterStr(userForm.getUsername()) + "' and username<>" + userForm.getUsername();
    应该是
    String sql = "SELECT * FROM userinfo where username='"
    + chStr.filterStr(userForm.getUsername()) + "' and username<>’" + userForm.getUsername()+"'";
      

  6.   

    ResultSet rs = conn.executeQuery(sql);
    为什么看着这么别扭啊?
    没这么写过,都是用PreparedStatement的executeQuery方法的,这个conn怎么看怎么不想这个类型的呢?
    倒是觉得像Connection的引用类型?
    个人感觉这句有问题的!