JDBC关键步骤及代码

JDBC简介

JDBC全称为java database connectivity(Java数据库连接),是sun公司指定的java数据库连接技术的简称。它是sun公司和数据库开发商共同开发出来的独立于DBMS的应用程序接口,它为java程序员进行数据库编程提供了统一的API。

实现代码

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

public class JDBC {
    public static  void main(String[] args){
        Connection con = null;
        PreparedStatement pStatement = null;
        ResultSet res = null;
        try{
            // 1.注册驱动
            Driver driver = new com.mysql.cj.jdbc.Driver();
            DriverManager.registerDriver(driver);

            //2.获取连接
            String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
            String user = "root";
            String password = "123456";
            con = DriverManager.getConnection(url, user, password);

            //3.获取数据库操作对象
            String sql = "select * from students where sno=?";
            pStatement = con.prepareStatement(sql);
            pStatement.setInt(1,1026);

            //4.执行sql语句
            res = pStatement.executeQuery();

            //5.处理查询结果集
            if(res.next()){
                System.out.println("查询成功,查询结果如下:");
                System.out.print("学号为:"+res.getInt(1));
                System.out.print("  姓名为:"+res.getString("name"));
                System.out.print("  分数为:"+res.getInt(3));
            }
        }catch (SQLException e){
            e.printStackTrace();
        }finally {
            //6.释放资源,try中的变量无法在finally中使用,关闭资源需从小到大依次关闭
            try {
                if (res != null) {
                    res.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (pStatement != null) {
                    pStatement.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (con != null) {
                    con.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
    }
}

数据库内容如下:
在这里插入图片描述
查询结果如下:
在这里插入图片描述

代码解析

1. 注册驱动

Driver driver = new com.mysql.cj.jdbc.Driver();
//第一个Driver是接口,第二个Driver是实现类
DriverManager.registerDriver(driver);

此处的两行代码也可用如下代码代替:

Class.forName("com.mysql.cj.jdbc.Driver");

该方法为类加载方法,要求JVM查找并加载指定的类,即该JVM会执行类的静态代码段,此方法将给定的类加载到Java虚拟机中。

Driver类:
在这里插入图片描述
resgisterDriver(Driver driver)(DriverManager类中的一个方法)方法:

修饰和类型方法和说明
static voidresgisterDriver(Driver driver) 注册给定的驱动程序

2. 获取连接

String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
String user = "root";
String password = "123456";
con = DriverManager.getConnection(url, user, password);

url:统一资源定位符(某个资源的绝对路径)
其中包括:

  • 协议
  • IP地址
  • 端口号(port)
  • 资源名(此处的资源名为数据库名)

在数据库驱动的url后加上需加上“serverTimezone=UTC”,否则会报如下错误:

java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' 
is unrecognized or represents more than one time(提示系统时区出现错误)

getConnection(String url, String user, String password)(DriverManager类中的一个方法)方法:

修饰和类型方法和说明
static ConnectiongetConnection(String url, String user, String password) 尝试建立与给定的数据库URL的连接

3. 获取数据库操作对象

String sql = "select * from students where sno=?";
pStatement = con.prepareStatement(sql);
pStatement.setInt(1,1026);

prepareStatement(String sql)(Connection类中的一个方法)方法:

类型方法和说明
PreparedStatementprepareStatement(String sql) 创建一一个PreparedStatement对象, 用于将多参数化的SQL语句发送到数据库

setInt(int parameterIndex, int x)(prepareStatement类中的一个方法)方法:

类型方法和说明
voidsetInt(int parameterIndex, int x) 将指定的参数设置为给定的Java int值

4. 执行sql语句

res = pStatement.executeQuery();

executeQuery()(PreparedStatement类中的一个方法)方法:

类型方法和说明
ResultSetexecuteQuery() 执行此PreparedStatement对象中的SQL查询语句,并返回查询的ResultSet对象。

5. 处理查询结果集

 if(res.next()){
 	System.out.println("查询成功,查询结果如下:");
    System.out.print("学号为:"+res.getInt(1));
    System.out.print("  姓名为:"+res.getString("name"));
    System.out.print("  分数为:"+res.getInt(3));
}

next()(ResultSet类中的一个方法)方法:

类型方法和说明
booleannext() 将光标从当前位置向前移动一行

getString(int columnIndex)、getString(String columnLabel)(均为ResultSet类中的方法)方法:

类型方法和说明
StringgetString(int columnIndex) 检索当前行中指定列(1,2,3…)的ResultSet对象为String的内容
StringgetString(String columnLabel) 检索当前行中指定列(列名)的ResultSet对象为String的内容

6. 释放资源

在fianlly中关闭资源能保证资源一定释放(在try块中若其中一个语句抛出异常,则后面语句中的.close()会无法执行)。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您的问题是关于JDBC连接数据库的基本步骤和每一步所涉及的类及关键代码的描述。下面是基本步骤及相关类和代码的简述: 1. 加载数据库驱动: 在使用JDBC连接数据库之前,需要先加载数据库驱动。一般来说,我们使用Class.forName()方法来加载驱动。例如,加载MySQL数据库驱动可以使用以下代码: ``` Class.forName("com.mysql.jdbc.Driver"); ``` 2. 建立数据库连接: 在加载驱动之后,我们需要建立一个数据库连接。需要提供数据库的URL、用户名和密码等信息。通常来说,我们使用DriverManager类来获取连接。例如,连接到本地MySQL数据库可以使用以下代码: ``` String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); ``` 3. 创建Statement对象: 在建立连接之后,我们需要创建一个Statement对象,用于执行SQL语句。可以使用Connection对象的createStatement()方法来创建Statement对象。例如: ``` Statement stmt = conn.createStatement(); ``` 4. 执行SQL语句: 在创建Statement对象之后,我们可以使用它来执行SQL语句。有两种方法可以执行SQL语句,分别是executeQuery()和executeUpdate()。executeQuery()方法用于执行查询语句,返回一个ResultSet对象;executeUpdate()方法用于执行非查询语句,例如插入、更新和删除数据等。例如,查询表中的所有数据可以使用以下代码: ``` ResultSet rs = stmt.executeQuery("SELECT * FROM tablename"); ``` 5. 处理结果集: 在执行查询语句之后,我们需要处理返回的结果集,通常使用ResultSet对象来处理。例如,可以使用ResultSet的next()方法来遍历结果集中的每一行数据,并使用getXXX()方法获取每一列的值,如下所示: ``` while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); // ... } ``` 6. 关闭资源: 在使用完数据库连接和Statement对象之后,需要及时关闭相关的资源,以释放内存和避免资源浪费。可以使用close()方法来关闭相关的资源。例如: ``` rs.close(); stmt.close(); conn.close(); ``` 以上就是使用JDBC连接数据库的基本步骤和每一步所涉及的类及关键代码的简述。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值