JavaWeb learning (six): JDBC to access the database (MySql, Oracle, SQLserver)

What JDBC is?

Java DateBase Connection(看这个英文八九不离十是起到一个连接的作用)
看下面这张图,JDBC 处于 Java 程序和 数据库中间,我们需要通过JDBC作为一个桥梁,使得两者之间存在联系。
怎么使得两者之间建立联系呢?
我们可以通过 Java 的一些 API 进行建立连接。   
什么是 API 呢?
简单来说就是 Java 中的一些 接口、方法、类。
通过这些来建立与数据库之间的关系。

JDBC database of all aspects of the operation:

1、JDBC API: 提供各种操作访问接口
   Connection、Statement、PreparedStatement、ResultSet
2、JDBC DriverManager: 
   管理不同的数据库驱动,统一管理访问更加方便。
3、各种数据库驱动:
   相应的数据库厂商提供的(第三方公司提供)
   连接(直接操作数据库)

JDBC specific steps to access the database (basically a template):

a、导入驱动,加载具体的驱动类
b、与数据库建立连接
c、发送Sql,执行
d、处理结果集 

API functions and operations:

API's main functions:

a、与数据库建立连接
b、发送Sql语句1
c、返回处理结果  

API's main operations:

a、DriverManager: 管理JDBC驱动
b、Connection   : 连接 
c、Statement    : 运行 Sql 语句(增删改查)
d、CallableStatement : 调用数据库中的存储过程 / 存储函数
e、Result       : 返回结果集

Each database used in connection string (Some information database):

不同的数据库对应的连接字符串不同,(形式不同,内容类似-------哪种类型的数据库、IP地址、端口号、数据库名)
Oracle : jdbc:oracle:thin:@localhost:1521:数据库实例名 (你创建的数据库的名字)
MySql  : jdbc:mysql://localhost:3306/数据库实例名
SQLServer : jdbc:microsoft:sqlserver:localhost:1433;databasename = 数据库实例名

Jar package database corresponding drive and corresponding import:

驱动在每个数据库各自对应的 jar包中,所以需要先把各个数据库对应的包进行导入
               
驱 动jar:(可以在这个链接中进行查找:https://mvnrepository.com/)
Oracle:ojdbc-x.jar
MySql:mysql-connector-java-x.jar
SqlServer:sqljdbc-x.jar   
                
导入驱动(不同的数据库对应的驱动不同)
Oracle : oracle.jdbc.OracleDriver
MySql  : com.mysql.jdbc.Driver
SqlServer : com.mircrosoft.sqlserver.jdbc.SQLServerDriver

Code for increase MySQL database, delete, change operations:

增、删、改 都属于对数据库的更新操作,处理结果会返回一个数表示
几行受影响。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBPMySqlDemo {
    private static final String URL = "jdbc:mysql://localhost:3306/sqltest";
    private static final String USER = "root";
    private static final String PWD = "root";

    public static void update() { // 静态方法要求其内部用到的变量也应该是静态的(所以上述变量也应该设置为静态变量)
        // 因为要进行两次异常处理,所以需要将变量设置成相对于 try..catch..语句的外部变量
        Statement stam = null;         // 会抛出SQLException异常
        Connection connection = null;  // 会抛出ClassNotFoundException异常
        try {
            
            // 导入驱动(加载具体的驱动类,如果本地没有就需要从官网进行下载,然后复制到该项目中,之后 Build Path)
            Class.forName("com.mysql.jdbc.Driver");
            // 连接(通过DriverManager.getConnection(连接字符串,用户名,密码))方法进行连接
            connection = DriverManager.getConnection(URL, USER, PWD);
            // 运行SQL语句(想要运行SQL语句要先创建一个Statement对象,用这个实例对象进行操作)
            stam = connection.createStatement();
            
            // 将sql语句作为字符串进行执行
//          String sql = "delete from student where stuno = 2";
            String sql = "insert into S values('1001','zs',23)";
            // 通过stam的方法进行执行SQL语句进行更新数据库(返回值是影响的行数 (int) )
            int count = stam.executeUpdate(sql);
            if (count > 0) {
                System.out.println("操作成功!");
            }
        } catch (ClassNotFoundException e) {   // 出现异常时最好一个一个处理(更加安全)
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {     // 无论操作成功与否,我们都要进行关闭操作(放在Finally必定对执行)
            try {
                // 如果还没有执行到给 stam 变量赋值就已经异常处理了,那么stam还是 null,就会null.close(),从而出现空指针的问题
                if(stam != null) stam.close();   // 避免出现空指针
                if(connection != null)connection.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    public static void main(String[] args) {
        // 将update() 设置为静态方法,便于调用
        update();
    }

}

Show results:

Before data is not inserted:

After inserting the data, refresh the database:

postscript:

其他数据库都是类似的操作,只需要加载不同的驱动即可。
本文主要介绍 JDBC 相关知识及一些简单操作,未涉及到查询相关的内容。
下一篇将会进行详细的查询操作。

Guess you like

Origin www.cnblogs.com/prjruckyone/p/12461096.html