JAVA数据库使用方法(JDBC)

作者:叁念

本文使用程序架构如图:
这里写图片描述


JAVA数据库连接方法(JDBC)

一.概念了解:

1.【ODBC - 开放数据库连接】是数据库访问和连接的统一的接口

2.【JDBC - java数据库连接】按照ODBC的模式指定,是一个通用的,底层的支持SQL功能java API

3.【JDBC的组成】JDBC提供了两种接口

  • JDBC API - 面向开发人员的API
  • JDBC DRIVER API - 面向底层驱动程序开发商的API

4.【JDBC API】——重要
一系列编程接口,可以用来实现数据库连接,访问数据库等功能。
下面是相关类与接口的说明:

 //DriverManager 
  驱动程序管理类,用于装载驱动程序,为数据库连接提供支持

 //Connection 
  一个接口,用于连接一个数据库

 //Statement
  一个接口,提供了执行SQL语句并获取查询结果的方法

 //PreparedStatement
  用来执行预编译的SQL语句

 //ResultSet
  一个接口,提供了对结果集进行处理的方法

5.【JDBC DRIVER API】——了解

 1. JDBC-ODBC2. 部分java技术的本地API驱动程序

 3. 全部基于java技术实现的本地API驱动程序

 4. 全部基于java技术的本地协议驱动程序

6.【配置JDBC的环境】——重要

  1. 下载JDBC MYSQL驱动包

  2. 解压后得到jar文件,在项目中导入

7.【操作数据库】——重要

  1. 加载JDBC驱动

  2. 打开连接

  3. 执行查询

  4. 操作结果集

  5. 关闭连接

二.数据库环境创建:


//数据库为:mydb 执行以下sql语句  

CREATE TABLE student( 
name VARCHAR(20) NOT NULL, 
class VARCHAR(20) NOT NULL
);

INSERT INTO student VALUES(1,'吴小亮','0101'); 
INSERT INTO student VALUES(2,'刘京生','0101'); 
INSERT INTO student VALUES(3,'李向名','0102'); 
INSERT INTO student VALUES(4,'高大山','0102'); 
INSERT INTO student VALUES(5,'王前','0103'); 
INSERT INTO student VALUES(6,'李云飞','0103');

三.代码实例:


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

public class SN_1_JDBC {
    // 1.连接数据库的连接字符串
    private static final String url = "jdbc:mysql://localhost:3306/mydb";
    // 2.数据库用户名
    private static final String user = "root";
    // 3.数据库密码
    private static final String pwd = "183686";
    // 4.驱动的名称 就是用来给JDBC反射驱动的
    private static final String driver = "com.mysql.jdbc.Driver";

    public static void main(String[] args) {

        try {
            // 5. 加载JDBC驱动
            Class.forName(driver);
            // 6. 打开连接 (通过驱动和数据管理器获取数据库的连接通道)
            Connection conn = DriverManager.getConnection(url, user, pwd);
            // 7. 通过连接对象打开状态
            Statement st = conn.createStatement();
            // 8. 通过Statement对象来查询
            String sql = "SELECT * FROM student";
            ResultSet rs = st.executeQuery(sql);
            // 9. 操作结果集
            while (rs.next()) {
                System.out.print(rs.getInt("sid") + "-" + rs.getString("name") + "-" + rs.getString("class") + "\n");
            }
            // 6. 关闭连接
            conn.close();
            st.close();
            rs.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

四.程序优化与深入:

1.其中dbconfig.properties配置文件如下

driver=com.mysql.jdbc.Driver
dburl=jdbc:mysql://localhost:3306/mydb
uname=root
upwd=666

2. SN_2_JDBC 类:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 案例
 * @author yujie
 *
 */
public class SN_2_JDBC {
    public static void main(String[] args) {
        showAll();

        insert();

        delete();

        update();
    }

    /**
     * 查找信息
     */
    private static void showAll() {
        try {
            Connection conn = ConnectionFactory.getConnection();
            String sql = "SELECT * FROM student";
            Statement stat = conn.createStatement();
            ResultSet rs = stat.executeQuery(sql);
            while (rs.next()) {
                System.out.print(rs.getInt("sid") + "-" + rs.getString("name") + "-" + rs.getString("class") + "\n");
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 增加信息
     */
    private static void insert() {
        try {
            Connection conn = ConnectionFactory.getConnection();
            String sql = "INSERT INTO student VALUES (10,'吴缸','110')";
            Statement stat = conn.createStatement();
            int count = stat.executeUpdate(sql);
            System.out.println("插入了" + count + "条记录。");
            conn.close();
            stat.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    /**
     * 删除信息
     */
    private static void delete() {
        try {
            Connection conn = ConnectionFactory.getConnection();
            Statement stat = conn.createStatement();
            String sql = "DELETE FROM student WHERE sid = 2";

            int count = stat.executeUpdate(sql);

            System.out.println("删除了" + count + "条记录。");

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    /**
     * 修改信息
     */
    private static void update() {
        try {
            Connection conn = ConnectionFactory.getConnection();

            Statement stat = conn.createStatement();

            String sql = "UPDATE student SET name = '孙悟空' WHERE name = '高大山'";
            int count = stat.executeUpdate(sql);
            System.out.println("更改了" + count + "条记录。");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

3. ConnectionFactory 类:


import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class ConnectionFactory {

    private static String driver;
    private static String dburl;
    private static String uname;
    private static String upwd;

    static {
        Properties properties = new Properties();
        InputStream is = ConnectionFactory.class.getClassLoader().getResourceAsStream("dbconfig.properties");
        try {
            properties.load(is);
            driver = properties.getProperty("driver");
            dburl = properties.getProperty("dburl");
            uname = properties.getProperty("uname");
            upwd = properties.getProperty("upwd");
            System.out.println("配置文件读取成功!");
        } catch (IOException e) {
            System.out.println("配置文件读取异常!");
        }

    }

    /**
     * 获取连接对象
     * 
     * @return
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public static Connection getConnection() throws ClassNotFoundException, SQLException {
        // 1. 加载JDBC驱动
        Class.forName(driver);
        // 2. 打开连接
        Connection conn = DriverManager.getConnection(dburl, uname, upwd);
        return conn;
    }

}

猜你喜欢

转载自blog.csdn.net/qq_36868342/article/details/79016317