JDBC之Statement接口

本文详细介绍了Java数据库连接(JDBC)的基本概念和使用步骤,包括加载数据库驱动、获取数据库连接、执行SQL语句、处理结果集及资源释放等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
     * JDBC全称Java数据库连接,它是一套用于执行SQL语句的API,应用程序可通过这套API连接到关系型数据库,并使用SQL语句来完成对数据库的查询、新增、更新和删除
     * 如果直接使用数据库厂商提供的访问接口操作数据库,应用程序的可移植性会很差,例如当前程序使用的是MySQL提供的接口操作数据库,如果换成Oracle,则需要重新使用
     * Oracle数据库提供的接口,这样代码的改动量很大,而JDBC就解决了这个问题,在程序中由JDBC和具体的数据库驱动联系,用户就不必直接与底层的数据库交互。
     * JDBC API主要位于java.sql包中,该包定义了一系列访问数据库的类和接口。
     */

    //实现第一个JDBC程序。JDBC的使用可以按照以下几个步骤进行
        //(1)加载并注册数据库驱动
//        DriverManager.registerDriver(Driver driver);
//        和Class.forName("DriverName");作用一样
        //(2)通过DriverManager获取数据库连接(String url,String user,String pwd)分别表示数据库的地址,登录数据库的用户名和密码。
//        Connection conn = DriverManager.getConnection(String url,String user,String pwd);
        //其地址的书写格式如下
//        jdbc:mysql://hostname:port/databasename
//        jdbc:mysql:是固定写法,mysql指的是MySQL数据库。
//        hostname指的是主机的名称,(如果数据库在本机上,hostname可以为localhost或127.0.0.1;如果要连接的数据库在其他计算机上,hostname为所要连接的计算机IP)
//        port指的是连接数据库的端口号(MySQL端口号默认为3306)
//        databasename指的是MySQL中相应数据库的名称
        //(3)通过Connection对象获取Statement对象。Connection创建Statement有三种方式
//        createStatement():创建基本的Statement对象
//        prepareStatement():创建PreparedStatement对象
//        prepareCall():创建CallableStatement对象
//        以创建基本的Statement对象为例,创建方式如下:
//        Statement stmt = conn.createStatement();
        //(4)使用Statement执行SQL语句
//        所有的Statement都有如下3种执行SQL语句的方法
//        execute():可以执行任何SQL语句
//        executeQuery():通常执行查询语句,执行后返回代表结果集的ResultSet对象
//        executeUpdata():主要用于执行DML和DDL语句。执行DML语句,如INSERT、UPDATE或DELETE时,返回受SQL语句影响的行数,执行DDL语句返回0
//        执行SQL语句,获取结果集ResultSet
//        ResultSet rs = stmt.executeQuery(sql);
        //(5)操作ResultSet结果集
//        如果执行的SQL语句是查询语句,执行结果将返回一个ResultSet对象,该对象里保存了SQL语句的查询的结果。程序可以通过ResultSet对象来取出查询结果
        //(6)关闭连接,释放资源
//        每次操作数据库结束后都要关闭数据库连接,释放资源,包括关闭ResultSet、Statement和Connection等资源
//        该程序从users表中读取数据,并将结果打印在控制台。
        
//        1.搭建数据库环境
//        在MySQL中创建一个名称为jdbc的数据库,然后在该数据库中创建一个users表,创建数据库和表的SQL语句。
        /*
        create DATABASE jdbc;
        USE jdbc;
        create TABLE users(
            id INT PRIMARY KEY AUTO_INCREMENT,
            name VARCHAR(40),
            password VARCHAR(40),
            email VARVHAR(60),
            birthday DATE
        );
        */

package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;

public class Test1 {

public static void main(String[] args) throws SQLException {

        Statement stmt = null;
        ResultSet rs = null;
        Connection conn = null;
        try {
            //1.加载并注册数据库的驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.通过DriverManager获取数据库连接
            String url = "jdbc:mysql://localhost:3306/jdbc?useSSL=false";//jdbc:mysql:是固定格式,localhost代表数据库在本机,3306是端口号,jdbc是数据库
            String username = "root";//用户名root
            String password = "root";//密码root
            conn = DriverManager.getConnection(url,username,password);//通过DriverManager获取数据库连接(String url,String user,String pwd)分别表示数据库的地址,登录数据库的用户名和密码。
            //3.通过Connection对象获取Statement对象
            stmt = conn.createStatement();
            //4.使用Statement执行SQL语句
            String sql = "select * from users";
            rs = stmt.executeQuery(sql);//executeQuery(sql)执行查询语句,执行后返回代表结果集的ResultSet对象
            //5.操作ResultSet结果集
            System.out.println("id |  name  |  password"+"|  email     |  birthday");
            while(rs.next()) {
                int id = rs.getInt("id");//通过列名获取指定字段的值
                String name = rs.getString("name");
                String psw = rs.getString("password");
                String email = rs.getString("email");
                Date birthday = rs.getDate("birthday");
                System.out.println(id+"  |  "+ name+"   |    "+ password+" |   "+email+"  |"+ birthday);
            }
            
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            //6.回收数据库资源
            if(rs != null) {
                try {
                    rs.close();
                }catch(SQLException e) {
                    e.printStackTrace();
                }
                rs = null;
            }
            if(stmt != null) {
                try {
                    stmt.close();
                }catch(SQLException e) {
                    e.printStackTrace();
                }
                stmt = null;
            }
            if(conn != null) {
                try {
                    conn.close();
                }catch(SQLException e) {
                    e.printStackTrace();
                }
                conn = null;
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值