日期:2014-05-20  浏览次数:20967 次

关于JSP
代码是:
<body>
  <% String name=request.getParameter("name");
String id=request.getParameter("id");
String writer=request.getParameter("writer");
String time=request.getParameter("time");
String type=request.getParameter("type");
try{
byte a[]=name.getBytes("ISO-8859-1");
name=new String(a,"utf-8");
byte b[]=writer.getBytes("ISO-8859-1");
writer=new String(b,"utf-8");
byte c[]=type.getBytes("ISO-8859-1");
type=new String(c,"utf-8");}
catch(Exception e){}
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String strConn= "jdbc:sqlserver://localhost;databaseName=zc;user=sa;password=123";
Connection conn= DriverManager.getConnection(strConn);  
Statement stmt=conn.createStatement();
String sql = "Update reader set name= '"+name+"' ,sex= '"+writer+"' ,time= '"+time+"' ,type= '"+type+"' where id='"+id+"'";
stmt.executeUpdate(sql);
%>
修改成功
<a href="book.jsp">返回</a>
  </body>
</html>
报错为:严重: Servlet.service() for servlet jsp threw exception
com.microsoft.sqlserver.jdbc.SQLServerException: 列名 'time' 无效。


请求高人指点


------解决方案--------------------
String sql = "Update reader set name= '" + name + "' ,sex= '"
+ writer + "' ,time= '" + time + "' ,type= '" + type
+ "' where id='" + id + "'";



1、首先检查你数据库表里有没有这个字段名time.

2、如果有,那就是time可能是你用的那种数据库的关键字了,修改你的表,把time换成其他的非数据库的关键字的名字就好了。

按上面的方法,绝对OK。
------解决方案--------------------
好好检查一下,你页面穿过去的time是String类型的,而你在数据库中是否是varchar类型呢,估计是你的类型不匹配,sqlserver数据库有datetime类型,而java也有对应的类型。你这个错误就是类型匹配不上所以才报错。