[Lập trình JSP – Servlet] Bài 3: Kết nối cơ sở dữ liệu MySQL với Java

Lập trình JSP – Servlet cho phép các nhà phát triển phần mềm xây dựng nội dung động cho website sử dụng nền tảng Java. Tiếp ngay sau đây sẽ là phần hướng dẫn kết nối cơ sở dữ liệu MySQL với Java trong loạt video hướng dẫn xây dựng website bán hàng bằng JSP – Servlet mong các bạn chú ý đón xem.

Khi xây dựng website, phần mềm hay bất kì ứng dụng nào chúng ta đều cần phải có nơi lưu trữ dữ liệu và MySQL là hệ quản trị tuyệt vời với nhiều ưu điểm được các lập trình viên lựa chọn. Vậy làm thế nào để kết nối cơ sở dữ liệu MySQL với Java?

JDBC (Java Database Connectivity) là tập các API trên Java để kết nối đến các hệ quản trị cơ sở dữ liệu, đối với mỗi hệ quản trị cơ sở dữ liệu thì có một JDBC Driver riêng để kết nối.

Trong đó:

– Class.forName(“com.mysql.jdbc.Driver”) dùng để load JDBC Driver tương ứng. Mỗi hệ quản trị cơ sở dữ liệu khác nhau sẽ cso chuỗi kết nối khác nhau, như ví dụ trên là dành cho hệ quản trị cơ sở dữ liệu MySQL.

– Bạn cần có thư viện để có thể kết nối, với MySQL bạn tải thư viện mysql-connector-java-5.1.18-bin

Bạn có thể xem video hướng dẫn kết nối cơ sở dữ liệu MySQL với Java bên dưới:

Hoặc bạn có thể tải mã nguồn cho bài viết lập trình JSP – Servlet hướng dẫn kết nối cơ sở dữ liệu MySQL với Java ở đường dẫn bên dưới:

Xem thêm một số bài viết liên quan lập trình JSP – Servlet:

Video hướng dẫn xây dựng website bán hàng sử dụng JSP – Servlet:
Bài 1: Hướng dẫn cài đặt, cấu hình cơ bản
Bài 2: Hướng dẫn thiết kế giao diện cho website
Bài 4: Hiển thị danh mục sản phẩm
Bài 5: Hiển thị sản phẩm theo danh mục
Bài 6: Hiển thị thông tin chi tiết sản phẩm

Lời kết: Như vậy chúng ta vừa tìm hiểu về hướng dẫn kết nối cơ sở dữ liệu MySQL với Java trong loạt bài xây dựng website bán hàng bằng JSP – Servlet. Ngoài ra, các bạn có thể xem thêm các bài viết khác trong chuyên mục lập trình JSP – Servlet để có thể tự xây dựng hoàn chỉnh một website cho riêng mình.

(Tác giả: Tùng Dương)

49 thoughts on “[Lập trình JSP – Servlet] Bài 3: Kết nối cơ sở dữ liệu MySQL với Java

      1. Trần Trọng Đại

        - Edit

        Reply

        Tôi để mọi thứ giống như video trừ password là khác, vì tôi đặt khác, tôi đã thử cài classpath, path đều không giải quyết được admin ạ.

  1. Trần Trọng Đại

    - Edit

    Reply

    code:
    /*
    * To change this license header, choose License Headers in Project Properties.
    * To change this template file, choose Tools | Templates
    * and open the template in the editor.
    */
    package connect;
    import java.sql.Connection;
    import java.sql.DriverManager;

    /**
    *
    * @author trant
    */
    public class DBConnect {
    public static Connection getConnection(){
    Connection conn = null;
    try{
    Class.forName(“com.mysql.jbdc.Driver”);
    conn = DriverManager.getConnection(“jbdc:mysql://localhost:3306/shop”, “root”,”123456″);

    }
    catch(Exception e){
    e.printStackTrace();
    }
    return conn;

    }
    public static void main(String[] args){
    System.out.println(getConnection());

    }

    }

    run file thì đc out put:
    run:
    java.lang.ClassNotFoundException: com.mysql.jbdc.Driver
    null
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at connect.DBConnect.getConnection(DBConnect.java:18)
    at connect.DBConnect.main(DBConnect.java:31)
    BUILD SUCCESSFUL (total time: 6 seconds)
    Giờ t đang làm bài 4 nhưng chưa xong cái này nên chưa test được. Bực quá mod ạ :'(

  2. em bị cái lỗi này là sao bác.
    Exception in thread “main” java.lang.UnsupportedOperationException: Not supported yet.
    at connect.DBConnect.getConnection(DBConnect.java:36)
    at dao.ProductDAO.getListProductByCategory(ProductDAO.java:24)
    at dao.ProductDAO.main(ProductDAO.java:42)

    1. Bạn xem thử chỗ phương thức getListProductBycategory() viết đúng ko, lệnh select có lấy đúng dữ liệu bảng ko..

  3. Lỗi này là sao đây a.

    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:673)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1084)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2465)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
    at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:822)
    at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at Model.ConnectDB.getConnection(ConnectDB.java:23)
    at Dao.CategoryDao.getListCategory(CategoryDao.java:22)
    at Dao.CategoryDao.main(CategoryDao.java:42)
    Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3052)
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:597)
    … 18 more
    Exception in thread “main” java.lang.NullPointerException
    at Dao.CategoryDao.getListCategory(CategoryDao.java:26)
    at Dao.CategoryDao.main(CategoryDao.java:42)
    C:\Users\XuanTruong\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
    BUILD FAILED (total time: 5 minutes 2 seconds)

  4. Sao mình click vào link dowload của bài nào nó cũng ra một link nhưng không dowload được.
    Cảm ơn bạn

  5. Em bị lỗi này. ad giúp e với.

    Error: Could not find or load main class connect.DBConnect
    C:\Users\Thien Nguyen\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
    BUILD FAILED (total time: 0 seconds)

    1. bạn sử dụng tool lập trình nào?
      Có thể tool lập trình bạn cài bị lỗi.
      Ở trên báo lỗi không tìm thấy phương thức main.

  6. ad cho e hỏi nếu e kết nối sql server với eclipse thì phải làm thế nào ạ!
    nếu e làm như vậy thì có đúng ko ạ
    e có add libraries tomcast,sqljdbc,jstl rồi ạ !
    thanks ad nhiều!!!!!
    package com.database;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;

    public class ConnectionDB {

    private String jdbcURL;
    private String jdbcUsername;
    private String jdbcPassword;
    private Connection jdbcConnection;

    public ConnectionDB(String jdbcURL, String jdbcUsername, String jdbcPassword) {
    this.jdbcURL = jdbcURL;
    this.jdbcUsername = jdbcUsername;
    this.jdbcPassword = jdbcPassword;
    }

    protected void connect() throws SQLException {
    if (jdbcConnection == null || jdbcConnection.isClosed()) {
    try {
    Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
    jdbcConnection = DriverManager
    .getConnection(“jdbc:sqlserver://localhost:1433;databaseName=shop;userName=sa;password=1111”);
    } catch (ClassNotFoundException e) {
    //throw new SQLException(e);
    System.out.println(“loi”);
    }
    // connectionUrl

    }
    }

  7. Phạm Tuấn Phát

    - Edit

    Reply

    Dạ e thêm thư viện MySQL như của ad v?nhưng chạy vẫn không dc
    Exception in thread “main” com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
    at com.mysql.jdbc.MysqlIO.(MysqlIO.java:355)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2461)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
    at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:822)
    at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at connect.DBConnect.getDBConnect(DBConnect.java:38)
    at connect.DBConnect.getDBConnect(DBConnect.java:24)
    at connect.DBConnect.main(DBConnect.java:45)
    Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.(Socket.java:434)
    at java.net.Socket.(Socket.java:244)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:259)
    at com.mysql.jdbc.MysqlIO.(MysqlIO.java:305)
    … 17 more
    C:\Users\PCC\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
    BUILD FAILED (total time: 5 seconds)

  8. Khi mình chạy mà nó báo thế này là sao ad

    run:
    null
    BUILD SUCCESSFUL (total time: 0 seconds)

    sao không thấy nó hiện ra sql như trên của bạn nhỉ

  9. Phan Mạnh Hùng

    - Edit

    Reply

    Khi em chạy project shop của anh thì nó báo lỗi

    Error: Could not find or load main class test.NewClass
    C:\Users\GBlue\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
    BUILD FAILED (total time: 0 seconds)

    Tuy nhiên, nếu em chạy trong một project java application thì lại bình thường. Anh giúp em với.

    1. Dạ được rồi ạ. Do file project anh đặt ban đầu chứa kí tự Unicode. sau khi em sửa thì file đã chạy ngon. Em cảm ơn anh.

      1. Trong quá trình làm nếu có thắc mắc gì bạn có thể để lại tín nhắn, nếu hỗ trợ được bên mình sẽ giúp đỡ.
        Xin chúc bạn một ngày vui!

  10. D:\JAVA_HOME\CODE\shop\nbproject\build-impl.xml:1048: Deployment error: Starting of Tomcat failed, the server port 8080 is already in use.
    See the server log for details.
    BUILD FAILED (total time: 0 seconds)

  11. ad ơi.cái cơ sở dữ liệu á.e download về.mà ép vào mysql k đc,a giúp e vs,e đang làm đồ án cuôi kì nên nhờ ad giúp e với

  12. run:
    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    null
    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
    at com.mysql.jdbc.MysqlIO.(MysqlIO.java:355)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2461)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
    at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:822)
    at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at connect.DBConnect.getConnecttion(DBConnect.java:21)
    at connect.DBConnect.main(DBConnect.java:30)
    Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.(Socket.java:434)
    at java.net.Socket.(Socket.java:244)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:259)
    at com.mysql.jdbc.MysqlIO.(MysqlIO.java:305)
    … 16 more
    BUILD SUCCESSFUL (total time: 2 seconds)
    ????xem giup e voi ad.đoạn này e cứ bị lỗi.sữa hoài k đc ad ak

Bình luận

Loading...