2012-07-29 62 views
0

連接到數據庫我有JSP形式:從servlet的

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<link rel="stylesheet" href="./Styles/Site.css" type="text/css" /> 
<title>Create new customer</title> 
</head> 
<body> 
    <fieldset> 
     <legend>Create new customer</legend> 
     <form action="CreateCustomerServlet" method="GET"> 
      // text of form ... 
      <input type="submit" value="Create customer" /> 
     </form> 
    </fieldset> 

</body> 
</html> 

是去CreateCustomerServlet -

package control; 

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

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

import com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource; 
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; 

import Model.Customer; 
import Model.Gender; 

/** 
* Servlet implementation class CreateCustomerServlet 
*/ 
@WebServlet("/CreateCustomerServlet") 
public class CreateCustomerServlet extends HttpServlet { 
    // members .. 

    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public CreateCustomerServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse 
    *  response) 
    */ 
    protected void doGet(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 

     // get the parameters from the jsp form .. 
      saveInDB() ; 
    } 

    private void saveInDB() throws ClassNotFoundException, SQLException { 

     Connection connection = null; 
     try { 
      String strServer = "jdbc:mysql://127.0.0.1:3306/testdb"; 
      MysqlDataSource ds = new MysqlConnectionPoolDataSource(); 
      ds.setServerName(strServer); 
      ds.setDatabaseName("testdb"); 
      connection = ds.getConnection("root", ""); 
      Statement statement = connection.createStatement(); 
      statement.execute(" /** sql INSERT statement **/"); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       connection.close(); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 
     } 

    } 
} 

當它站上罰球線 - connection = ds.getConnection("root", "");它會拋出異常 - com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "mysql:"'.

我使用MySql,在http://localhost/phpmyadmin/我有一個數據庫testdb與用戶在快照 -

enter image description here

和兩個用戶都有空密碼作爲快照 -

enter image description here

回答

1

您可以通過2種不同的方式建立連接。

你可以這樣做:

MysqlDataSource ds = new MysqlDataSource(); 
ds.setServerName("localhost"); 
ds.setPort("3306"); 
ds.setDatabaseName("testdb"); 
ds.setUser("root"); 
ds.setPassword(""); 
Connection connection = ds.getConnection(); 

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb","root",""); 

順便說這是一個很好的做法,把連接設置在屬性文件。你應該閱讀這個出色的post和這個相關的article

1

服務器名稱必須是財產以後像localhost127.0.0.1,而不是jdbc:mysql://127.0.0.1:3306/testdb

String strServer = "127.0.0.1"; 
ds.setServerName(strServer); 

和您必須設置端口號:

dataSource.setPort(3306);