就我现在对JSP的了解,我无法把产生错误的代码范围确定出来。但是要全部贴出来,肯定大家看着也会头大。所以麻烦大家能不能帮帮我,说下这个提示一般是什么错误。代码是网上找来学习的,稍微改了下但是遇到问题了。
registor.jsp文件<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>  
    <title>My JSP 'regester.jsp' starting page</title>
  </head>
  
  <body>
<form name="form1" method="post" action="register.jsp">
    <input type="text" name="username" id="username">
    <input type="password" name="password" id="password">
    <input type="submit" name="Submit" value="提交">
</form>
  <jsp:useBean id="user1" class="LRM.adduser" scope="page"/>
  <%
  try{
    request.setCharacterEncoding("GBK");
    String username=request.getParameter("username");
    String password=request.getParameter("password");
    user1.setUsername(username);
    user1.setPassword(password);
    user1.addNewUser();
    }
    catch(Exception e){
    out.println(e.getMessage());
    }
  %>
  </body>
</html>adduser.java文件package LRM; //导入java类库 
import java.lang.*; 
import java.sql.*; 
//adduser由db派生出来,拥有db的成员变量和方法 
public class adduser extends db { 
//构建器 
public boolean addNewUser(){ 
boolean boadduser=false; 
try { 
//进行用户注册的记录添加操作,生成sql语句 
String sSql=new String("insert into db(regtime,username,password,email,homepage,signs)"); 
sSql=sSql+ " values(getdate(),'"+Username+"','"+Password+"','"+Email+"','"+Homepage+"','"+Signs+"');"; 
//一种调试的方法,可以打印出sql语句,以便于查看错误 
System.out.println(sSql); 
//调用父类的executeUpdate方法,并根据成功以否来设置返回值 
if(super.executeUpdate(sSql))boadduser=true; 

catch(Exception ex) { //出错处理 
System.err.println("adduser.addNewUser: " + ex.getMessage()); 
}finally{ 
//无论是否出错,都要返回值 
return boadduser; 

}  //checkUser()方法用来检查用户名是否重复 //如果重复返回一个false 
public boolean checkUser(){ 
boolean boadduser=false; 
try { 
//构建sql查询语句 
String sSql="select * from db where username='"+Username+"'"; 
 //调用父类的executeQuery方法 
if((super.executeQuery(sSql)).next()){ 
//查询出来的记录集为空 
boadduser=false; 
}else{ 
boadduser=true; 


catch(Exception ex) { 
//出错处理 
System.err.println("adduser.addNewUser: " + ex.getMessage()); 
}finally{ 
//返回值 
return boadduser; 


public String getUsername(){ 
return Username;

public void setUsername(String newUsername){ 
 //用户名有可能是中文,需要进行转换 
Username =db.toChinese(newUsername);

//属性密码Password的get/set方法 
public String getPassword(){ 
return Password;
}
public void setPassword(String newPassword){ 
Password = newPassword;

//属性Email的get/set方法 
public String getEmail(){ 
return Email;

public void setEmail(String newEmail){ 
Email = newEmail;

 //属性主页Homepage的get/set方法 
public String getHomepage(){ 
return Homepage;

public void setHomepage(String newHomepage){ 
Homepage = newHomepage;

 //属性主页Signs的get/set方法 
public String getSigns(){ 
return Signs;

public void setSigns(String newSigns){ 
//签名有可能是中文,需要进行转换 
Signs = db.toChinese(newSigns);

}db.java文件
package LRM;
import java.sql.*;
import java.net.*; 
import java.sql.*; 
import java.lang.*; 
import java.io.*; 
import java.util.*; 
public class db{ //成员变量初始化 
Connection conn=null; //数据库连接 
ResultSet rs = null; //记录集 
String Username=""; //用户名 
String Password=""; //密码 
String Email=""; //email 
String Homepage=""; //主页 
String Signs=""; //签名

public db() { 
try

 //注册数据库驱动程序为Oracle驱动 
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

catch(java.lang.ClassNotFoundException e)

 //这样写是为了方便调试程序,出错打印mydb()就知道在什么地方出错了 
System.err.println("mydb(): " + e.getMessage()); 
} }
//executeQuery方法用于进行记录的查询操作  //入口参数为sql语句,返回ResultSet对象 
public ResultSet executeQuery(String sql) { 
rs = null; 
String url="jdbc:sqlserver://localhost:1433;DatabaseName=demodb";
String user="sa";
    String pa="123";
try { 
    //建立数据库连接,使用SQLserver2005的一种thin连接方式,url为主机名字,数据库名字,后面的两个user为用户名,pa为密码 
    conn = DriverManager.getConnection(url,user,pa); 
    Statement stmt = conn.createStatement(); 
    //执行数据库查询操作 
rs = stmt.executeQuery(sql); 

catch(SQLException ex) { 
     System.err.println("db.executeQuery: " + ex.getMessage()); 

return rs; 

//executeUpdate方法用于进行add或者update记录的操作 
//入口参数为sql语句,成功返回true,否则为false 
public boolean executeUpdate(String sql) { 
boolean bupdate=false; 
rs = null; 
String url="jdbc:sqlserver://localhost:1433;DatabaseName=demodb";
String user="sa";
    String pa="123";
try { 
//建立数据库连接,使用SQLserver2005的一种thin连接方式,url为主机名字,数据库名字,后面的两个user为用户名,pa为密码 
conn = DriverManager.getConnection(url,user,pa); 
Statement stmt = conn.createStatement(); 
int rowCount = stmt.executeUpdate(sql); 
//如果不成功,bupdate就会返回0 
if(rowCount!=0)bupdate=true; 

catch(SQLException ex) { 
//打印出错信息 
     System.err.println("db.executeUpdate: " + ex.getMessage()); 

return bupdate; 
}
//toChinese方法用于将一个字符串进行中文处理  //否则将会是???这样的字符串 
public static String toChinese(String strvalue) { 
try{ 
if(strvalue==null) 

return null; 

else 

strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK"); 
return strvalue; 

}catch(Exception e){ 
return null; 

}
}访问"http://localhost:8080/LRMS/register.jsp",提示:insert into db(regtime,username,password,email,homepage,signs) values(getdate(),,,,,)
db.executeUpdate: ',' 附近有语法错误。
数据库demodb里的表db里只设置了username跟password为非空,所以我在jsp页面只取了username跟password的值用于测试。不知道是不是跟这有关系?哎。

解决方案 »

  1.   

    sSql=sSql+ " values(getdate(),'"+Username+"','"+Password+"','"+Email+"','"+Homepage+"','"+Signs+"')";把sql里面最后一个;去掉
      

  2.   

    应该不是这个。。
    好像是你的sql语句写错了,你把错直接打出来,
      

  3.   

     sql语句加分号干什么,字符串结尾加一个就行了
      

  4.   

    还有,Email+"','"+Homepage+"','"+Signs
    这三个在拼sql之前先验证下如果为空则insert后面的对应三个列名不要写出来了
      

  5.   

    sSql=sSql+ " values(getdate(),'"+Username+"','"+Password+"','"+Email+"','"+Homepage+"','"+Signs+"');"; 
    最后一个)后面的;去了就行了
      

  6.   

    jsp里的SQL语句末尾不能有";"吗?我想SQL里要跟不要都是可以的所以也写了。但是去掉";"也是一样的。
      

  7.   

    to shiyiwan:
    明白,我只是用这个学习下带javabean的项目结构,刚接触JSP。数据库的表db里Email、Homepage、Signs 这三个属性是可以为空的。而且在db.java里都给它们设置成""值的,我不是很清楚会不会有影响,你觉得呢?
      

  8.   

    可能是Email、Homepage、Signs这三个字段置""引起的。这个sql语句打印出来是不是:
    insert into db(regtime,username,password,email,homepage,signs) values(getdate(),user,password,'','','')sqlserver中不确定这样是否正确,空值的表示,一般用null,或者如果是空字符串的话,' ',长度为1。可以试验下把默认值置" "试试,或者测试这条sql先去掉这三个可为空字段试试。末尾;只是其中的一个小问题。
      

  9.   

    报的那个错应该是的sql语句有问题,好好检查你的sql语句。
      

  10.   

    看了好久都没看出SQL有什么问题,头都痛了。感觉很简单,其实很麻烦~
      

  11.   

    楼主可以去baidu或者google,在这里问,得到可靠消息的概率比较小