2013-10-20 27 views
0

我在尝试编写servlet时遇到小的编译错误,并且已检查了所有{}和;尝试编写Servlet以将HTML表单数据插入到数据库中时出现编译错误

下面是代码:

//This servlet processes the user's registration and redirects them to the catalog. 

// Load required libraries 
import java.io.*; 
import java.util.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.sql.*; 

public class DatabaseAccess extends HttpServlet{ 

// JDBC driver name and database URL 
private static final String JDBC_DRIVER="com.mysql.jdbc.Driver"; 
private static final String DB_URL="jdbc:mysql://localhost/dvdsite"; 

public void doGet(HttpServletRequest request, 
        HttpServletResponse response) 
      throws ServletException, IOException 

     // Database credentials 
     static final String USER = "user"; 
     static final String PASS = ""; 

     // Get form values from register page 
     String username = request.getParameter("username"); 
     int userID = Integer.parseInt(username); 
     String password = request.getParameter("password"); 
     String email = request.getParameter("email"); 
{ 
     try { 
     // Register JDBC driver 
     Class.forName("com.mysql.jdbc.Driver"); 

     // Open a connection 
     conn = DriverManager.getConnection(DB_URL,USER,PASS); 

     // Execute SQL query 
     stmt = conn.createStatement(); 
     String sql; 
     sql = "INSERT INTO dvdsite values (username, password, email)"; 
     ResultSet rs = stmt.executeQuery(sql); 

     // Clean-up environment 
     rs.close(); 
     stmt.close(); 
     conn.close(); 
     }catch(SQLException se){ 
     //Handle errors for JDBC 
     se.printStackTrace(); 
     }catch(Exception e){ 
     //Handle errors for Class.forName 
     e.printStackTrace(); 
     }finally{ 
     //finally block used to close resources 
     try{ 
      if(stmt!=null) 
       stmt.close(); 
     }catch(SQLException se2){ 
     }// nothing we can do 
     try{ 
      if(conn!=null) 
      conn.close(); 
     }catch(SQLException se){ 
      se.printStackTrace(); 
     }//end finally try 
     } //end try 
    } 
} 

这是我得到的错误:1个发现错误: 文件:/Applications/MAMP/htdocs/register.java [行:18] 错误: /Applications/MAMP/htdocs/register.java:18:';'预计

的错误,在这条线出现:

抛出了ServletException,IOException异常

谁能帮助?

+0

方法体必须有大括号。 – SLaks

+0

你可以发布'register.java'类吗? – herry

+1

坚持一个{在IOException后 – tom

回答

0

尝试使用固定语法错误的此版本。并调用文件DatabaseAccess.java,因为文件需要像他们的类一样命名。

import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class DatabaseAccess extends HttpServlet { 

    // JDBC driver name and database URL 
    private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
    private static final String DB_URL = "jdbc:mysql://localhost/dvdsite"; 

    // Database credentials 
    static final String USER = "user"; 
    static final String PASS = ""; 

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // Get form values from register page 
     String username = request.getParameter("username"); 
     int userID = Integer.parseInt(username); 
     String password = request.getParameter("password"); 
     String email = request.getParameter("email"); 

     Connection conn; 
     Statement stmt; 

     try { 
      // Register JDBC driver 
      Class.forName("com.mysql.jdbc.Driver"); 

      // Open a connection 
      conn = DriverManager.getConnection(DB_URL, USER, PASS); 

      // Execute SQL query 
      stmt = conn.createStatement(); 
      String sql; 
      sql = "INSERT INTO dvdsite values (username, password, email)"; 
      ResultSet rs = stmt.executeQuery(sql); 

      // Clean-up environment 
      rs.close(); 
      stmt.close(); 
      conn.close(); 
     } catch (SQLException se) { 
      // Handle errors for JDBC 
      se.printStackTrace(); 
     } catch (Exception e) { 
      // Handle errors for Class.forName 
      e.printStackTrace(); 
     } finally { 
      // finally block used to close resources 
      try { 
       if (stmt != null) 
        stmt.close(); 
      } catch (SQLException se2) { 
      }// nothing we can do 
      try { 
       if (conn != null) 
        conn.close(); 
      } catch (SQLException se) { 
       se.printStackTrace(); 
      }// end finally try 
     } // end try 
    } 
} 
+0

谢谢,但这只是给了我更多的错误,这是如此令人沮丧! –

+0

@TonySmith再试一次,我现在完全修复它,两个变量声明仍然失踪。 – noone

相关问题