<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.sql.*" %>  
  <html>
  <body>
  <% 
    
   String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=kcms"; String userName = "sa"; String userPwd = ""; Connection dbConn ;
        
            
            Class.forName(driverName); 
                  
            
            dbConn = DriverManager.getConnection(dbURL, userName, userPwd); 
        
     out.println("数据库操作成功,恭喜你"); 
      
  %>
  </body>
  </html> --------------------------------------
总是有以下报错
org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 5 in the jsp file: /sp.jsp
Generated servlet error:
Syntax error on tokens, delete these tokensAn error occurred at line: 5 in the jsp file: /sp.jsp
Generated servlet error:
Syntax error on tokens, delete these tokensAn error occurred at line: 5 in the jsp file: /sp.jsp
Generated servlet error:
Syntax error on tokens, delete these tokensAn error occurred at line: 5 in the jsp file: /sp.jsp
Generated servlet error:
Syntax error on tokens, delete these tokens
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:397)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:288)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)请问是怎么的?
小弟初学,请多关照!

解决方案 »

  1.   

    把连接数据库的改一下
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=kcms";
    String user="sa";
    String password="";
    Connection conn= DriverManager.getConnection(url,user,password);同时要把JDBC的JAR包放在你项目中的web-inf下的lib文件夹下
      

  2.   

    还是不行,我把jdbc的三个jar包放在了web_inf lib下,也在classpath添加了安装路径,还考在了jdk\jre\lib\ext\下,装的是slqserver2000 sp4 and sql jdbc sp3.但是就是要报错!不知道怎么回事,端口1433也没问题,sql 混合登陆模式也是有的
      

  3.   

    // 在控制台上测试一下你的代码,而且建议使用连接池处理数据连结,在页面上处理效率很低import java.*;
    public class Connect{
         private java.sql.Connection  con = null;
         private final String url = "jdbc:microsoft:sqlserver://";
         private final String serverName= "localhost";
         private final String portNumber = "1433";
         private final String databaseName= "pubs";
         private final String userName = "user";
         private final String password = "password";
         // Informs the driver to use server a side-cursor, 
         // which permits more than one active statement 
         // on a connection.
         private final String selectMethod = "cursor"; 
         
         // Constructor
         public Connect(){}
         
         private String getConnectionUrl(){
              return url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+selectMethod+";";
         }
         
         private java.sql.Connection getConnection(){
              try{
                   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
                   con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);
                   if(con!=null) System.out.println("Connection Successful!");
              }catch(Exception e){
                   e.printStackTrace();
                   System.out.println("Error Trace in getConnection() : " + e.getMessage());
             }
              return con;
          }     /*
              Display the driver properties, database details 
         */      public void displayDbProperties(){
              java.sql.DatabaseMetaData dm = null;
              java.sql.ResultSet rs = null;
              try{
                   con= this.getConnection();
                   if(con!=null){
                        dm = con.getMetaData();
                        System.out.println("Driver Information");
                        System.out.println("\tDriver Name: "+ dm.getDriverName());
                        System.out.println("\tDriver Version: "+ dm.getDriverVersion ());
                        System.out.println("\nDatabase Information ");
                        System.out.println("\tDatabase Name: "+ dm.getDatabaseProductName());
                        System.out.println("\tDatabase Version: "+ dm.getDatabaseProductVersion());
                        System.out.println("Avalilable Catalogs ");
                        rs = dm.getCatalogs();
                        while(rs.next()){
                             System.out.println("\tcatalog: "+ rs.getString(1));
                        } 
                        rs.close();
                        rs = null;
                        closeConnection();
                   }else System.out.println("Error: No active Connection");
              }catch(Exception e){
                   e.printStackTrace();
              }
              dm=null;
         }     
         
         private void closeConnection(){
              try{
                   if(con!=null)
                        con.close();
                   con=null;
              }catch(Exception e){
                   e.printStackTrace();
              }
         }
         public static void main(String[] args) throws Exception
           {
              Connect myDbTest = new Connect();
              myDbTest.displayDbProperties();
           }
    }
      

  4.   

    // 配置连接池的方法,虽然是MySQL,但基本上修改一下驱动名和路径就可以了<Context
                crossContext="true"
                path="/WebApp6b"
                reloadable="true"
                workDir="work\Catalina\falcon.azrael\.">
              <Resource
                auth="Container"
                name="jdbc/BookDB"
                type="javax.sql.DataSource"
                driverClassName="com.mysql.jdbc.Driver"
                password="1234"
                maxIdle="30"
                maxWait="10000"
                username="dbuser"
                url="jdbc:mysql://localhost:3306/BookDB?autoReconnect=true"
                maxActive="100"/>
            </Context>        
          </Host>
      

  5.   

    把这三个包放到Tomcat的\common\lib下,
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    String url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=kcms";
    String user="sa";
    String password="";
    Connection conn= DriverManager.getConnection(url,user,password);
      

  6.   

    TOMCAT下面也考了的,还是不行
    这种报错应该是jsp页面符号错误吧?
    但就是不知道那里的错!
      

  7.   

    我用的xp home版,sql 2000 personal版,不知道是不是系统原因呢?
      

  8.   

    唉,怎么不看错误提示瞎猜呢,
    An error occurred at line: 5 in the jsp file: /sp.jsp
    Generated servlet error:
    Syntax error on tokens, delete these tokens看看你的jsp页面第五行是不是有什么全角字符还是什么的,数据库连接本身应该没有问题
      

  9.   

    classpath=.;%java_home%\lib;%java_home%\lib\tools.jar;%tomcat_home%\common\lib;
    C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;
    C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;
    C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.ja在eclipse测试数据库连接下报以下错:
    java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at cs.Test.main(Test.java:32)
      

  10.   

    肯定是有中文的字符之类的!同意,但不一定是第5行,但肯定是 <%   和 %>之间的代码。
      

  11.   

    好好看看,可能是有全角字符,看连接数据库的语法没什么问题
    看了你的数据库连接测试,是不是你的classpath设置有问题啊
      

  12.   

    楼主的JSP格式错误。好好检查一下。
      

  13.   

    String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=kcms"; String userName = "sa"; String userPwd = ""; Connection dbConn ;
            
                
                Class.forName(driverName); 
                      
                
                dbConn = DriverManager.getConnection(dbURL, userName, userPwd); 
            
         out.println("数据库操作成功,恭喜你"); ------------------------------------上面这段代码要捕捉异常的,套个 
    try{
    String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=kcms"; String userName = "sa"; String userPwd = ""; Connection dbConn ;
            
                
                Class.forName(driverName); 
                      
                
                dbConn = DriverManager.getConnection(dbURL, userName, userPwd); 
            
         out.println("数据库操作成功,恭喜你"); }
    catch{
    }
      

  14.   

    连接数据库代码怎么写在JSP页面里?
      

  15.   

    String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; 
    这一行的前面有三个全角空格“ ”
      

  16.   

    把第5行:
    <% 
        
       String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; 
    百分号%和String之间的空格删了。