欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaWeb笔记13-JDBC原理及使用Statement访问数据库

程序员文章站 2023-02-20 12:51:10
JDBCJava DataBase Connectivity将java代码和数据库进行连接可以为多种关系型数据库DBMS提供统一的访问方式,目的就是用java来操作数据库java -> JDBC DriverManager -> 驱动 -> 数据库不同的数据库需要不同的驱动来操作,JDBC DriverManager可以通过统一操作不同的驱动来操作不同的数据库。接口、方法、类:APIJDBC DriverManager管理不同的数据库驱动数据库驱动(jar包)驱动是由数...

JDBC
Java DataBase Connectivity
将java代码和数据库进行连接
可以为多种关系型数据库DBMS提供统一的访问方式,目的就是用java来操作数据库
java -> JDBC DriverManager(统一管理器) -> 驱动 -> 数据库
不同的数据库需要不同的驱动来操作,JDBC DriverManager可以通过统一操作不同的驱动来操作不同的数据库。
接口、方法、类:API
jdbc通过API来操作驱动

JDBC DriverManager
管理不同的数据库驱动

数据库驱动(jar包)
驱动是由数据库相应厂商提供的(第三方公司提供)
作用:连接/直接操作数据库

JDBC API
提供各种操作访问接口(增删改查)
Connection
Statement
PreparedStatement
ResultSet

主要功能:
1、与数据库建立链接
2、对数据库发送SQL(增删改查)语句
3、返回数据库的处理结果

具体是通过以下方法实现
DriverMan:管理JDBC驱动
Connection:连接
Statement(PreparedStatement):增删改查
CallableStatement:调用数据库中的存储过程/存储函数
Result:返回的结果集

JDBC访问数据库的具体步骤
1、导入驱动,加载具体的驱动类
2、与数据库建立链接
3、发送sql,执行
4、(查询)处理结果集

数据库驱动
最常见的关系型数据库及对应驱动jar:
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.microsoft.sqlserver.jdbc.SQLServerDriver

创建数据库连接需要三个要素;
数据库名&IP地址端口号:连接字符串
用户名
密码

各数据库对应的连接字符串
Oracle:
jdbc:oracle:thin:@localhost:1521:ORCL
MySQL:
jdbc:mysql://localhost:3306/数据库实例名
SqlServer:
jdbc:microsoft:sqlserver:localhost:1433;databasename=数据库实例名

获取连接对象通过DriverManager

示例代码:

public class Test {
	// 数据库连接字符串
	private static final String URL = "jdbc:mysql://127.0.0.1:3306/af_school?useUnicode=true&characterEncoding=UTF-8";
	private static final String USERNAME = "root";
	private static final String PASSWORD = "123456";

	public static void update() {
		Connection connection = null;
		Statement stmt = null;
		try {
			// a、导入驱动,加载具体的驱动类
			Class.forName("com.mysql.jdbc.Driver");
			// b、与数据库建立连接
			connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
			// c、发送sql,执行(增删改、查)
			stmt = connection.createStatement();
			String sql = "INSERT INTO student(`id`,`name`,`birthday`)" + "VALUES('20200023','BinBin','2001-09-09')";

			// 返回值表示增删改几条数据
			int count = stmt.executeUpdate(sql); // 执行sql语句
			// d、处理结果
			if (count > 0) {
				System.out.println("操作成功!");
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}catch (SQLException e) {
			e.printStackTrace();
		}catch (Exception e) {
			e.printStackTrace();
		}
		
		finally {
			// 关闭数据库连接
			try {
				// 对象.方法,如果对象为空,会报空指针
				stmt.close();
				connection.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String args[]) {
		update();
	}

本文地址:https://blog.csdn.net/PIUYIXIU/article/details/108908408