• 第六周作业(JDBC + MySQL 学习)


    jdbc mysql connection 教程

    翻译自:JDBC MySQL Connection Tutorial

    Java Database Connectivity (JDBC) 是一个基于Java的数据访问技术,它定义了用户入户访问一个数据库。它提供了一组在数据库查询、修改数据的方法。JDBC类包含在java.sqljavax.sql包中。

    按照如下步骤建立一个JDBC开发环境,并在这个环境上运行JDBC MYSQL示例程序。

    1. 安装 Java

    确认你已经安装了Java SE。安装参考 Windows Ubuntu

    2. 下载并安装Eclipse IDE

    Eclipse安装参考链接

    3. 下载并安装MySQL数据库

    MySQL安装参考链接

    • 此Java数据库应用程序以MySQL为例,参考次链接在MySQL上创建database、tables,插入数据等等。

    4. Java MySQL连接器

    JDBC API几乎包含了任意一个数据库的可独立工作的接口。每一种数据库都需要一个特有的驱动,该驱动实现了JDBC API。

    JDBC数据库连接器提供了访问数据库的入口,为了能通过JDBC访问数据库,我们需要数据库厂商提供的JDBC驱动。这个驱动通常是以jar或zip文件或其它有效形式同数据库产品一起在官网发布的。这些文件必须放在classpath中(后面的“在Eclipse中配置JDBC驱动”步骤中会讲到),否则会出现class-not-found-exceptions,表示未在classpath中发现驱动。

    • MySQL Connector/J是官方的MySQL JDBC驱动。
    • 可以通过此链接下载Java语言访问MySQL的连接器的jar文件:http://dev.mysql.com/downloads/connector/j/。此教程使用JDBC MySQL连接器5.1版本,将下载文件解压。

    5. JDBC MySQL示例数据库

    此示例使用的database为"jdbcdb",其中包含下面的表;

    • 在MySQL中创建一个名为"jdbcdb"的database.
    • 在该database里创建下面的表.

    代码:

    sudo service mysql
    mysql -u [此处username] -p
    [此处password]
    create database jdbcdb;
    use jdbcdb;
    

    5.1 Department Table:

    Field Type Key Extra
    dept_id int Primary Key auto_increment
    dept_name varchar(50)
    location varchar(50)

    代码:

    CREATE TABLE Department (
    	dept_id int PRIMARY KEY AUTO_INCREMENT,
        dept_name varchar(50),
        location varchar(50)
    );
    

    5.2 Employee Table:

    Field Type Key Extra
    emp_id int Primary Key auto_increment
    emp_name varchar(50)
    dob date
    salary double
    dept_id int Foreign key references department(dept_id)

    代码:

    CREATE TABLE Employee (
    	emp_id int PRIMARY KEY AUTO_increment,
        emp_name varchar(50),
        dob date,
        salary double,
        dept_id int,
        FOREIGN KEY (dept_id) REFERENCES Department(dept_id)
    );
    

    最后,我们分别向两个表插入一些数据,比如:

    insert into Department value(1, 'Finace', 'Service Building');
    insert into Department value(2, 'Technology', 'Center Building');
    insert into Employee value(1, 'wcb', '2088-08-08', 2888.8, 2);
    

    6. 在Eclipse IDE中建立Java项目

    • 打开Eclipse IDE
    • 建立一个新的Java项目,命名为”JDBCMySQLSample“。如果你是新手,参考此链接了解Java和Eclipse.

    7. JDBC MySQL连接URL字符串

    我们写一个类 (JDBCMySQLConnection) 来定义数据库连接的配置声明和方法,使JDBC连接到MySQL数据库。

    7.1 使用java.sql 包的接口

    你需要从java.sql.*包中导入需要的类/接口,它们是Java Application和数据库之间的桥梁。

    7.2 加载MySQL Java的驱动

    Java MySQL驱动(com.mysql.jdbc.Driver)可从下载的Java MySQL连接器的JAR文件中获得。这个连接器JAR文件要被包含到工程的classpath,后面的”在Eclipse中配置JDBC驱动“中会讲。
    语句Class.forName("com.mysql.jdbc.driver")会使MySQL Java驱动被加载到内存。
    在下面的代码中,我们创建一个静态字符串常量作为参数传递给Class.forName方法

    public static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
    Class.forName(DRIVER_CLASS);
    

    7.3 建立Java MySQL连接

    我们通过DriverManager类的getConnection()方法获取从Java到MySQL的连接对象,此方法需要JDBC MySQL连接URL字符串,MySQL数据库的用户名和密码作为参数。在此示例中,我们已将这些参数作为常量传递给getConnection()方法。

    public static final String URL = "jdbc:mysql://localhost/jdbcdb";
    public static final String USER = "YOUR_DATABASE_USERNAME";
    public static final String PASSWORD = "YOUR_DATABASE_PASSWORD";
    . . .
    . . .
    Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);
    
    7.3.1 Java-数据库连接URL字符串

    jdbc:<DBMS>://<HOSTNAME>:<PORT_NUMBER>/YOUR_DATABASE_NAME
    例如,Java-MySQL连接URL字符串:
    jdbc:mysql://localhost:3306/jdbcdb
    其中,

    • "jdbc" - 所有数据库都需要有的
    • "mysql" - 任何关系型数据库需要。此数据库是 mysql
    • "localhost" - 你的数据库的服务器主机名
    • 3306 - MySQL的默认端口号,如果没有改为其它端口可以省略
    • YOUR_DATABASE_NAME - MySQL database的名称,在此示例中就是"jdbcdb"

    为了完成上面的步骤,新建一个类JDBCMySQLConnection,并放在包com.theopentutorials.jdbc.db中,然后复制下面的代码:

    package com.theopentutorials.jdbc.db;
     
    //Step 1: Use interfaces from java.sql package 
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
     
    public class JDBCMySQLConnection {
        //static reference to itself
        private static JDBCMySQLConnection instance = new JDBCMySQLConnection();
        public static final String URL = "jdbc:mysql://localhost/jdbcdb";
        public static final String USER = "YOUR_DATABASE_USERNAME";
        public static final String PASSWORD = "YOUR_DATABASE_PASSWORD";
        public static final String DRIVER_CLASS = "com.mysql.jdbc.Driver"; 
         
        //private constructor
        private JDBCMySQLConnection() {
            try {
                //Step 2: Load MySQL Java driver
                Class.forName(DRIVER_CLASS);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
         
        private Connection createConnection() {
     
            Connection connection = null;
            try {
                //Step 3: Establish Java MySQL connection
                connection = DriverManager.getConnection(URL, USER, PASSWORD);
            } catch (SQLException e) {
                System.out.println("ERROR: Unable to Connect to Database.");
            }
            return connection;
        }   
         
        public static Connection getConnection() {
            return instance.createConnection();
        }
    }
    

    8. Employee类

    我们写一个类Employee,其属性为数据库中Employee表的属性。
    例如,为了查询Employee表,我们用下面代码实现Employee类;

    package com.theopentutorials.jdbc.to;
     
    import java.util.Date;
     
    public class Employee {
         
        private int empId;
        private String empName;
        private Date dob;
        private double salary;
        private int deptId;
         
        public int getEmpId() {
            return empId;
        }
        public void setEmpId(int empId) {
            this.empId = empId;
        }
        public String getEmpName() {
            return empName;
        }
        public void setEmpName(String empName) {
            this.empName = empName;
        }
        public Date getDob() {
            return dob;
        }
        public void setDob(Date dob) {
            this.dob = dob;
        }
        public double getSalary() {
            return salary;
        }
        public void setSalary(double salary) {
            this.salary = salary;
        }
        public void setDeptId(int deptId) {
            this.deptId = deptId;
        }
        public int getDeptId() {
            return deptId;
        }
         
        //toString()
        @Override
        public String toString() {
            return "Employee [empId=" + empId + ", empName=" + empName + ", dob="
                    + dob + ", salary=" + salary + ", deptId=" + deptId + "]";
        }       
    }
    

    9. Java Application Client (main())

    • 一个Java-数据库的Application处理任何的SQL语句必须经过以下几步:
      1. 建立一个连接。(上面提到的JDBCMySQLConnection类已经完成)
      2. 创建一个Statement对象(41行)
      3. 执行查询语句(execute(String sql)方法,42行)
      4. 处理ResultSet对象。仅在查询语句后需要。(44-51行)
      5. 关闭连接,立即释放Statement对象的数据库和JDBC资源。(57行)

    我们写一个 “JDBCMySQLDemo” 类放在“com.theopentutorials.jdbc.main” 包中,来测试JDBC MySQL连接并执行一个简单的查询语句。

    package com.theopentutorials.jdbc.main;
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import com.theopentutorials.jdbc.db.JDBCMySQLConnection;
    import com.theopentutorials.jdbc.to.Employee;
     
    public class JDBCMySQLDemo {
        public static void main(String[] args) {        
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Enter the EmployeeID:");
             
            int employeeId;
            try {
                employeeId = Integer.parseInt(br.readLine()); //21行
                JDBCMySQLDemo demo = new JDBCMySQLDemo();
                Employee employee = demo.getEmployee(employeeId); //23行
                System.out.println(employee);           
            } catch (NumberFormatException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }       
        }
     
        public Employee getEmployee(int employeeId)  {      
            ResultSet rs = null;
            Connection connection = null;
            Statement statement = null; 
             
            Employee employee = null;
            String query = "SELECT * FROM Employee WHERE emp_id=" + employeeId; //38行
            try {           
                connection = JDBCMySQLConnection.getConnection();
                statement = connection.createStatement(); //41行
                rs = statement.executeQuery(query);  //42行
                 
                if (rs.next()) {       //44行
                    employee = new Employee();
                    employee.setEmpId(rs.getInt("emp_id"));
                    employee.setEmpName(rs.getString("emp_name"));
                    employee.setDob(rs.getDate("dob"));
                    employee.setSalary(rs.getDouble("salary"));
                    employee.setDeptId((rs.getInt("dept_id")));
                }    //51行
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                if (connection != null) {
                    try {
                        connection.close();    //57行
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
            return employee;
        }
    }
    

    这个JDBC MySQL示例得到用户输入的employee ID,在数据库中找到这个employee并且利用标准输出显示详情。
    这段程序步骤如下:

    • 21行根据用户输入得到employee ID
    • 23行调用getEmployee()方法,并传给参数employee ID
    • 38行为查询语句
    • 40行建立java-MySQL连接
    • 41行获得statement对象
    • 42行执行查询并返回ResultSet对象
    • 44-51行处理ResultSet对象
    • 57行关闭数据库连接

    10. 在Eclipse中配置JDBC驱动

    如果你此时运行JDBCMySQLDemo类会产生如下异常:
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    你需要将之前下载好的Java MySQL Connector JAR文件添加到工程的classpath中。
    右击工程名(JDBCMySQLSample) -> Properties -> Buildpath -> Libraries -> Add External JAR 然后选择 “mysql-connector-java-5.1.14-bin.jar” JAR 文件.

    11. 输出

    运行JDBCMySQLDemo类,将得到如下的输出结果:

    12. 文件结构

    此示例项目的完整的文件结构如下所示:

  • 相关阅读:
    vue项目开发流程
    板子-补充
    Python 类对象的JSON序列化与反序列化
    Maven中央仓库地址配置大全
    Docker 中搭建 MySQL 主从复制
    mac 上必备的工具
    iTerm 中 oh my zsh 主题去掉 git 目录多级显示
    iTerm2 主题设置
    MySQL查看表占用空间大小
    MySQL 语句报错:1093
  • 原文地址:https://www.cnblogs.com/wcb-xtu/p/5353921.html
Copyright © 2020-2023  润新知