Java第十七章数据库操作

本文介绍了数据库的基础概念,包括数据共享、减少冗余等特性,以及SQL语言的基本结构。重点讲解了JDBC技术,包括JDBC概述、JDBC驱动类型、常用的类和接口,如DriverManager、Connection、Statement和PreparedStatement,以及数据库操作的步骤,如连接数据库、发送SQL语句和处理结果集。
摘要由CSDN通过智能技术生成

一、数据库基础

1.什么是数据库

数据库是一种储存结构,它允许使用各种格式输入、处理和检索数据,不必在每次需要数据时重新输入。例如,当需要某人的电话号码时,需要查看电话簿,按照姓名来查询,这个电话簿就是一个数据库。

数据库的特点:实现数据共享,减少数据的冗余度,数据库的独立性,数据库实现集中控制,数据库的一致性和可维护性。

2.数据库的种类

层次性数据库一般基于某种数据模型,可分为层次型、网状型、关系型及面向对象型。

3.SQL语言

sql被广泛地应用于大多数据库库中,使用sql语言可以方便地查询、操作、定义和控制数据库中地数据。sql语言主要由以下几部分组成:数据定义语言、数据操纵语言、数据控制语言、事物控制语言。

1.select语句

select语句用于从数据表中检索。语法如下:

SELECT 所选字段列表 FROM 数据表名
WHERE 条件表达式 GROUP BY 字段名 HAVING 条件表达式(指定分组的条件)
ORDER BY 字段名[ASC|DESC]

2.insert语句

insert语句用于向表中插入新数据。语法如下:

insert into 表名[(字段名 1,字段名 2...)]
values(属性值 1,属性值 2...)

3.update语句

update语句用于更新数据表中的某些记录。语法如下:

UPDATE 数据表名 SET 字段名 = 新的字段值 WHERE 条件表达式

4.delete语句

delete语句用于删除。语法如下:

delete from 数据表明 where 条件表达式

二、jdbc概述

1.jdbc技术

jdbc的全程是 Java DataBase Connectivity,是一套面向对象的应用程序接口,指定了统一地访问各种关系型数据库地标准接口。jdbc是一种底层的apl,因此访问数据库时需要在业务逻辑层中嵌入SQL语句。SQL语句是面向关系的,依赖于关系模型,所以通过jdbc技术访问数据库也是面向关系的,jdbc技术主要完成以下几个任物:

1.与数据库建立一个连接

2.向数据库发送SQL语句

3.处理从数据库返回的结果

2.jdbc驱动程序的类型

  • 第一类:JDBC-ODBC桥。
  • 第二类:部分本地API部分Java的驱动程序。
  • 第三类:JDBC网络纯Java驱动程序。
  • 第四类:本地协议的纯 Java 驱动程序。
  • 第三、四两类都是纯Java的驱动程序,因此,对于Java开发者来说,它们在性能、可移植性、功能等方面都有优势。

三、jdbc中常用的类和接口

1.DriverManager类

功能:就是类中的方法:registerDriver和getConnection
1.registerDriver注册驱动:告诉程序该使用哪一个数据库驱动jar
static void registerDriver(Driver driver)//注册与给定的驱动程序DriverManager

写的代码使用:
Class.forName("com.mysql.jdbc.Driver");
通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块

Static {

	try{
		java.sql.DriverManager.registerDriver(new Driver);
	}catch (SQLException E){
		 throw new RuntimeException("Can't register driver!");
	}
}
注意的是:在mysql5之后的驱动jar包可以省略注册驱动的步骤
    
2.getConnection获取数据库连接
    方法:static Connection getConnection(String url,String username,String password)
    参数:
    url:指定连接的路径
    	语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
		例子:jdbc:mysql://localhost:3306/employee
		细节:如果连接是本机Mysql服务器,并且默认的端口是3306,则url可以		  简写为:jdbc:mysql:///数据库名

2.Connection接口

1.Connection 接口代表与特定的数据库的连接,在连接上下文中执行SQL语句并返回结果。

2.java.sql.Connection接口的实现对象代表与数据库的连接,也就是在Java程序和数据库之间建立连接。Connection接口中常用的方法:

Statement createStatement():创建一个语句对象,语句对象用来将SQL语句发送到数据 库。
PreparedStatement prepareStatement(String sql):创建一个预编译的语句对象,用来将参数 化的SQL语句发送到数据库,参数包含一个或者多个问号“?”占位符。
CallableStatement prepareCall(String sql):创建一个调用存储过程的语句对象,参数是调用 的存储过程,参数包含一个或者多个问号“?”为占位符。
close():关闭到数据库的连接,在使用完连接后必须关闭,否则连接会保持一段比较长的 时间,直到超时。

isClosed():判断连接是否已经关闭。

3.Statement接口

1.Statement接口用于在已建立连接的基础上向数据库发送SQL语句

2.java.sql.Statement称为语句对象,它提供用于向数据库发出SQL语句,并且访问结果。

有三种Statement接口::java.sql.Statement、java.sql.PreparedStatement和 java.sql.CallableStatement

PreparedStatement继承Statement接口,CallableStatement继承 PreparedStatement接口。
Statement实现对象用于执行基本的SQL语句,PreparedStatement实现对 象用于执行预编译的SQL语句,CallableStatement实现对象用于用来调用数据库中的存储过程。

Statement提供了许多方法,最常用的方法如下:

executeQuery():运行查询语句,返回ResultSet对象。
executeUpdate():运行更新操作,返回更新的行数。
close():关闭语句对象。
isClosed():判断语句对象是否已经关闭。

4.PreparedStatement接口

1.PreparedStatement接口用来动态地执行SQL语句。

5.ResultSet

1.ResultSet接口相当于一个临时表,用来暂时存放数据库查询操作所获得的结果集。ResultSet实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过next()方法可以将指针向下移。

2.在Statement执行SQL语句时,如果是SELET语句会返回结果集,结果集通过接口 java.sql.ResultSet描述的,它提供了逐行访问结果集的方法,通过该方法能够访问结果集中不同 字段的内容。
ResultSet最常用的方法介绍如下:

close():关闭结果集对象。
isClosed():判断结果集对象是否已经关闭。
next():将结果集的光标从当前位置向后移一行。
getString():获得在数据库里是CHAR 或 VARCHAR等字符串类型的数据,返回值类型是 String。
getFloat():获得在数据库里是浮点类型的数据,返回值类型是float。
getDouble():获得在数据库里是浮点类型的数据,返回值类型是double。
getDate():获得在数据库里是日期类型的数据,返回值类型是java.sql.Date
getBoolean():获得在数据库里是布尔数据的类型,返回值类型是boolean。
getBlob():获得在数据库里是Blob(二进制大型对象)类型的数据,返回值类型是Blob类 型。
getClob():获得在数据库里是Clob(字符串大型对象)类型的数据,返回值类型是Clob。

四、数据库操作

1.连接数据库

以下是Java连接MySQL数据库的步骤:

  1. 下载并导入MySQL的JDBC驱动程序,可以从MySQL官网下载或者使用Maven等构建工具导入。

  2. 在Java代码中加载JDBC驱动程序,例如:

    Class.forName("com.mysql.jdbc.Driver");
  3. 创建数据库连接,需要指定数据库的URL、用户名和密码,例如:

    String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "root"; String password = "mypassword"; Connection conn = DriverManager.getConnection(url, user, password);
  4. 创建Statement对象,用于执行SQL语句,例如:

    Statement stmt = conn.createStatement();
  5. 执行SQL语句,例如查询数据:

    ResultSet rs = stmt.executeQuery("SELECT * FROM mytable"); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); System.out.println("id: " + id + ", name: " + name + ", age: " + age); }
  6. 关闭数据库连接和Statement对象,例如:

    rs.close(); stmt.close(); conn.close();

2.向数据库发送SQL语句

Java中向数据库发送SQL语句可以通过JDBC实现。JDBC是Java Database Connectivity的缩写,是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了一套用于执行SQL语句的方法和处理返回结果的方式。

以下是一个简单的Java程序,演示如何向数据库发送SQL语句:

import java.sql.*;

public class JdbcDemo {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            // 加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");

            // 获取数据库连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");

            // 创建Statement对象
            stmt = conn.createStatement();

            // 执行SQL语句
            String sql = "SELECT * FROM user";
            rs = stmt.executeQuery(sql);

            // 处理结果集
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println("id: " + id + ", name: " + name + ", age: " + age);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            try {
                if (rs != null) {
                    rs.close();
                }
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

该程序连接到本地的MySQL数据库,执行了一个查询语句,并将结果集输出到控制台。

3.处理查询结果集

4.顺序查询

5.模糊查询

6.预处理语句

7.添加、修改、删除记录

8.简单概述如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Violet Evegarden

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

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

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

打赏作者

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

抵扣说明:

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

余额充值