JDBC使用

什么是JDBC?

JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库。
SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库的)规范,俗称JDBC这些规范的实现由具体的厂商去做~
对于开发人员来说,我们只需要掌握JDBC接口的操作即可!
JDBC

一、导入数据库驱动

  • 使用Maven导入MySql驱动
		<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.23</version>
        </dependency>

二、第一个JDBC程序

import java.sql.*;

public class TestJDBC {
    public static void main(String[] args) {
            // 建立与数据库的Connection连接
            // 这里需要提供:
            // 数据库所处于的(本机)
            // 数据库的端口号: 3306 (mysql专用端口号)
            // 数据库名称 test
            // 编码方式 UTF-8
            // 账号 root
            // 密码 123456
        try {
            //1、加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.用户信息和url
            String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
            String userName = "root";
            String password = "123456";
            //3、连接成功,数据库对象
            Connection connection = DriverManager.getConnection(url,userName,password);
            System.out.println("连接成功,获取连接对象: " + connection);
            //4、执行SQL的对象Statement 执行sql的对象
            Statement statement = connection.createStatement();
            //5、执行sql的对象 去执行sql ,可能存在结果,查看返回结果
            String sql = "select * from abc";
            ResultSet resultSet = statement.executeQuery(sql);//查询用executeQuery增删改都用executeLargeUpdate

            while (resultSet.next()){
                System.out.println("id="+resultSet.getObject("id"));
                System.out.println("name="+resultSet.getObject("name"));
                System.out.println("age="+resultSet.getObject("age"));
            }
            //6、释放连接
            resultSet.close();
            statement.close();
            connection.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

三、JDBC对象解释

  • DriverManager
 // DriverManager.registerDriver(new com.mysq1.jdbc.Driver);
 class.forName("com.mysql.jdbc.Driver");//固定写法,加载驱动

connection connection = briverManager. getconnection(ur1,username,password);
//connection代表数据库
//数据库设置自动提交
//事务提交
//事务滚回
connection.ro11back();
connection.commit(;
connection.setAutocommit(;
  • URL
string ur1 = "jdbc :mysql://localhost: 3306 /jdbcstudy?
useunicode=true&characterEncoding=utf8&usessL=true";
/ / mysql -- 3306
//协议://主机地址:端口号/数据库名?参数1&参数2&参数3
l / oralce -- 1521
l /ljdbc:oracle:thin:@localhost:1521:sid
  • Statement 执行SQL对象
statement.executeQueryO;//查询操作返回Resu1tsetstatement.executeo; //执行任何SQL
statement.executeupdate();//更新、插入、删除。都是用这个,返回一个受影响的行数
  • PrepareStatement执行SQL的对象(预编译)
    推荐使用预编译,可以防止SQL注入的问题
import java.sql.*;

public class PrepareStatementTest {
    public static void main(String[] args) {
            try{
                //1、加载驱动
                Class.forName("com.mysql.cj.jdbc.Driver");
                //2.用户信息和url
                String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
                String userName = "root";
                String password = "123456";
                //3、连接成功,数据库对象
                Connection connection = DriverManager.getConnection(url,userName,password);
                System.out.println("连接成功,获取连接对象: " + connection);

                //4、执行SQL的对象SPreparedStatement执行sql的对象
                String sql = "select * from abc where id = ? ;"; //预编译SQL
                PreparedStatement preparedStatement = connection.prepareStatement(sql);

                //5、手动赋值
                preparedStatement.setString(1,"2");

                //6、指向sql
                ResultSet resultSet = preparedStatement.executeQuery();

                while (resultSet.next()){
                    System.out.println("id="+resultSet.getObject("id"));
                    System.out.println("name="+resultSet.getObject("name"));
                    System.out.println("age="+resultSet.getObject("age"));
                }
                //7、释放连接
                resultSet.close();
                preparedStatement.close();
                connection.close();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

  • ResultSet查询结果集:封装了所有的查询结果
resultset.getobject(;//在不知道列类型的情况下使用//如果知道列的类型就使用指定的类型
resultset.getstring();
resu7tset.getInt();
resultset.getFloat();
resu7tset.getDate();
resultset.getobject();

遍历,指针

resultset.beforeFirst();//移动到最前面
resultset.afterLast();//移动到最后面
resultset.next();//移动到下一个数据
resultset.previous();//移动到前一行
resultset.absolute(row);//移动到指定行
  • 释放资源
//6、释放连接
resultSet.close();
statement.close();
connection.close();//不关耗资源
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值