2012-02-08 2 views
2

Я пытаюсь соединить servlet с mysql базы данных в ..., но в коде сервлета .. заявление:Servlet-база проблема подключения

Class.forName(driver) показывает ошибку с красным подчеркиванием на tooltip-

Syntax error on token-"driver",VariableDeclaratorId expected after this token. 

Я просто не могу получить его, почему это происходит ..

здесь код сервлета:

package Servlets; 

import java.io.IOException; 
import java.sql.*; 

import javax.servlet.ServletException; 

import javax.servlet.http.HttpServlet; 

import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 

public class LoginServlet extends HttpServlet 
{ 

    private static final long serialVersionUID = 1L; 

    public LoginServlet() 
    { 
     super(); 
    } 
    Connection con = null; 

    String url = "jdbc:mysql://localhost:3306/"; 

    String db = "abc"; 

    String driver = "com.mysql.jdbc.Driver"; 

    Class.forName(driver); 


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
    } 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 

    { 
     String username= request.getParameter("username"); 
     String password= request.getParameter("password"); 
     con = DriverManager.getConnection("url+db","root","root"); 
     Statement st = con.createStatement(); 
     int val = st.executeUpdate("INSERT login values("+username+","+password+")"); 
     System.out.println("1 row affected"); 

     response.sendRedirect("login.jsp"); 

    } 

} 

ответ

3

Я бы поставил линию

Class.forName("com.mysql.jdbc.Driver").newInstance(); 

чуть выше

con = DriverManager.getConnection("url+db","root","root"); 

Имейте в виду, что сервлет должен быть многопоточных так, что ваш

Connection con = null; 

, вероятно, вызывают проблемы, когда два пользователя одновременно пытаются войти в систему.

Кроме того, необходимо, чтобы закрыть соединение правильно

try { 
    if(con != null) 
     con.close(); 
     } catch(SQLException e) {} 

и, наконец, вам нужно будет обрабатывать любое исключение, доступ к базе данных может привести к так обернуть его в попытке поймать блок.

package Servlets; 

import java.io.IOException; 
import java.sql.*; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class LoginServlet extends HttpServlet 
{ 

private static final long serialVersionUID = 1L; 

public LoginServlet() 
{ 
    super(); 
} 

String url = "jdbc:mysql://localhost:3306/"; 
String db = "abc"; 
String driver = "com.mysql.jdbc.Driver"; 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 
} 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 

{ 
    try{ 
    Connection con = null; 
    String username= request.getParameter("username"); 
    String password= request.getParameter("password"); 
    Class.forName(driver).newInstance(); 
    con = DriverManager.getConnection("url+db","root","root"); 
    Statement st = con.createStatement(); 
    int val = st.executeUpdate("INSERT login values("+username+","+password+")"); 
    System.out.println("1 row affected"); 

    response.sendRedirect("login.jsp"); 
    }catch(SQLException e){} 
    finally{ 
    try { 
     if(con != null) 
     con.close();con=null; 
     } catch(SQLException e) {} 
    } 

} 
} 

Или что-то в этом роде.

В качестве окончательного примечания гораздо лучше использовать «пул соединений».

-1
Class.forName("com.mysql.jdbc.Driver"); 
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/rental","root","root") ; 
Statement st = conn.createStatement(); 
String sql = "select * from login"; 
ResultSet rs = st.executeQuery(sql); 
-1

Class.forName ("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection ("jdbc: mysql: // localhost: 3306/rental", "root", "root");

+0

Ваш ответ должен содержать объяснение вашего кода и описание, как она решает эту проблему. – AbcAeffchen

0

Добавить соединитель mysql 5.1.0 bin jar file .. добавить файл jar в библиотеку проектов.

ссылка http://www.java2s.com/Code/Jar/m/Downloadmysqldatabase1610jar.htm

+0

Хотя это может теоретически ответить на вопрос, [было бы предпочтительнее] (// meta.stackoverflow.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки. –

Смежные вопросы