Java-JDBC编程

Java-JDBC编程

使用JDBC连接访问数据库需要经过以下几个步骤:

在这里插入图片描述

1、加载数据库驱动

JDBC是由两部分与数据库独立的接口组成,一部分是面向程序程序开发人员的JDBC API,另一部分是面向底层的JDBC Driver API。而JDBC驱动程序就是由实施了这些接口的类组成,主要用于与数据库服务器交换信息

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

老版的数据库驱动则为"com.mysql.jdbc.Driver";

2、建立与数据库的连接

通常使用DriverManager类的getConnection()方法来获取数据库的连接对象,只有创建对象之后才可以对数据进行相关操作。它的获取方法如下:

DriverManager.getConnection(String URL, String USER, String PASSWORD);

其中:

1)URL——数据库连接字符串,不同的数据库虽有区别但都遵循“JDBC协议+IP地址或域名+端口+数据库名称”的格式,其中MySQL数据库的URL一般是"jdbc:mysql://localhost:3306/test"

2)USER——链接数据库的用户名

3)PASSWORD——链接数据库的密码

如果数连接失败,请先确认数据库的服务是否开启,只有数据库的服务处于开启状态才能成功地与数据库建立连接

此外还应该使用try-catch语句将连接语句包围起来捕获异常

3、向数据库发送SQL命令

向数据库进行操作和访问的是Statement对象,而该对象不是通过Statement类直接创建的,而是通过Connection对象所提供的方法,如:

1)createStatement()方法:用于创建一个基本的Statement对象,该对象主要用于执行静态SQL语句

2)prepareStatement(String sql)方法:根据参数化的SQL语句创建一个预编译的PrepareStatement对象,该对象主要用于执行动态SQL语句

3)prepareCall(String sql)方法:根据SQL语句来创建一个CallableStatement对象,该对象主要用于执行数据库存储操作

获取Statement对象后,就可以通过调用它的不同方法来执行不同的SQL语句,如:

1)ResultSet executeQuery(String sql):专门用于查询

2)int executeUpdate(String sql):执行DDL、DML语句,前者返回0,后者返回受影响行数

3)boolean execute(String sql):可执行任何SQL语句如果执行后第一个结果为ResultSet(即执行了查询语句)则返回true,如果执行了DDL、DML语句则返回false。如果返回结果为true,则随后可以通过该Statement对象的getResult()方法获取结果集对象,如果返回结果为false则随后可以通过getUpdateCount()方法获得受影响的行数

如果SQL运行后会产生结果集,那么Statement对象则会将结果集封装成ResultSet对象并返回,有的方法没有返回需要通过getResultSet获取

Statement的上述三种方法都会抛出SQLException异常

4、处理数据库返回的结果集

SQL的查询结果都是经过ResultSet封装的,ResultSet结果集包含满足SQL查询语句的所有行,读取其数据的方法主要是getXXX(),它的参数可以是用来表示第几列(从1开始)的整型,也可以是列名,返回的是对应的XXX类型的值

getString()可以返回所有列的值,不过返回的都是字符串类型

getArray(int colindex/String columnname)可以获得当前行中,colindex所在列的元素组成的对象的数组

5、断开与数据库的连接

1)关闭结果集,如rs.close()

2)关闭statement对象,如stmt.close()

3)关闭连接,如con.close()

6、示例

package com.demo;

import java.sql.*;

public class JdbcDemo {
    public static void main(String[] args) {
        try {
            //加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //连接数据库,创建数据库连接对象
            Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.247.129/myscore", "root", "123456");
            //创建访问和操作数据库的对象
            Statement st = conn.createStatement();
            //定义sql语句
            String sql = "select * from ScoreNow";
            //使用sql语句操作数据库并放回结果集rs
            ResultSet rs = st.executeQuery(sql);
            //处理得到的结果
            while(rs.next()){
                int id = rs.getInt(1);
                String subject = rs.getString("Subject");
                double score = rs.getDouble("Score");
                int rank = rs.getInt("Rank");
                System.out.println("第" + id + "场考试——" + "考试科目为" + subject + ",我取得了" + score +"分," + "在班级排名第" + rank + "名");
            }
            rs.close();//关闭结果集对象
            st.close();//关闭statement对象
            conn.close();//关闭数据库连接
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

得过且过的勇者y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值