2013-10-20 3 views
1

Help! 클래스 프로젝트에서 일하고 있는데 Java Servlet을 사용하여 데이터베이스에 정보를 삽입해야합니다 ... 예, Java Servlet이어야합니다. 거의 정확한 코드를 가지고 있지만 컴파일하려고하면 불법적 인 표현 오류가 발생합니다.Java 서블릿을 사용하여 데이터베이스에 정보를 삽입하는 방법

//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{ 

    public void doGet(HttpServletRequest request, 
        HttpServletResponse response) 
      throws ServletException, IOException 
    { 
     // JDBC driver name and database URL 
     static final String JDBC_DRIVER="com.mysql.jdbc.Driver"; 
     static final String DB_URL="jdbc:mysql://localhost/dvdsite"; 

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

     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

오류가 발생한 줄은 무엇입니까? 스택 추적? – Zavior

+0

정적 최종 문자열 JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc : mysql : // localhost/dvdsite"; –

답변

2

정적 최종 선언은 메서드 호출 외부해야한다 - 단지 클래스.

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 
    { 
+0

톰 감사합니다. 두 가지 오류를 읽었습니다. 나는 아직도이 두 라인에서 오류를 얻고있다. // 데이터베이스 자격증 명 static final String USER = "user"; 정적 최종 문자열 PASS = ""; –

+0

@TonySmith : - 그냥 똑같은 일을하십시오. 즉, 메소드 호출 밖에서 가져 가세요! :) –

+0

@RahulTripathi, 나는 그것을 시도 : 1 오류가 발생했습니다 : 파일 : /Applications/MAMP/htdocs/register.java [행 : 15] 오류 : /Applications/MAMP/htdocs/register.java:15 : ';' 예상대로 12 개의 오류가 발생합니다. IOException 바로 다음에 메시지가 나타납니다. –

1

1) 나는이 삽입 쿼리를 작성하는 적절한 방법이 아니다 생각 : - 당신은 그것을 변경할 수 있습니다

sql = "INSERT username, password, email INTO dvdsite"; 

이 좋아하는 -

sql = "INSERT INTO dvdsite values(username, password, email)"; 

dvdsite 테이블을 그냥 가지고 가정 3 개의 다른 컬럼은 컬럼 이름을 지정할 필요가있다.

2) 또한 static final 선언은 클래스에 있어야합니다. 즉, 메소드 밖으로 만듭니다.

public class DatabaseAccess extends HttpServlet{ 

     private static final String JDBC_DRIVER="com.mysql.jdbc.Driver"; 
     private static final String DB_URL="jdbc:mysql://localhost/dvdsite"; 
    private static final String USER = "user"; 
    private static final String PASS = ""; 
    public void doGet(HttpServletRequest request, 
        HttpServletResponse response) 
      throws ServletException, IOException 
    { 

3) 모든 것을 변경 한 후에 오류가 발생한다고 댓글을 달았습니다. 당신이 여기 semicolon ; 누락 때문입니다 : -

throws ServletException, IOException; 
+1

정확합니다. 고맙습니다. 나는 그것을 고쳤다. –

+0

안녕하세요. –

1

여러 컴파일 오류가 있습니다

  1. 정적 멤버는 메서드 내에서 정의 할 수 없습니다, 그것은 클래스에 있어야
  2. 연결 및 문 객체는 선언되지 않은

그리고 마지막으로 SQL 삽입이 올바르지 않습니다.

관련 문제