Проблема соединения с базой данных сервлетов - PullRequest
2 голосов
/ 08 февраля 2012

Я пытаюсь подключить servlet к базе данных mysql ... но в коде сервлета .. утверждение:

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

 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");

    }

}

Ответы [ 4 ]

3 голосов
/ 08 февраля 2012

Я бы поставил

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) {}

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

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) {}
  }

}
}

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

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

0 голосов
/ 11 августа 2015

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

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

0 голосов
/ 04 ноября 2014

Class.forName ("com.mysql.jdbc.Driver"); Соединение conn = DriverManager.getConnection ("jdbc: mysql: // localhost: 3306 / rental", "root", "root");

0 голосов
/ 15 октября 2014
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...