JDBC(一)--JDBC核心API/JDBC工具类/Statement/PreparedStatement/CallableStatement

本文介绍了JDBC入门,包括Java程序如何通过JDBC连接MySQL数据库,详细讲解了JDBC核心API如Driver、Connection、Statement、PreparedStatement和CallableStatement的使用,以及它们之间的区别和优化JDBC的方法。
摘要由CSDN通过智能技术生成

JDBC入门

1.之前操作MySQL数据库:使用MySQL客户端工具连接MySQL服务器,发送sql语句到MySQL服务器,执行。

2.JDBC:使用Java程序发送sql语句到数据库服务器端执行。JDBC是Oracle-Sun公司设计的一套专门用于Java程序操作数据库的接口
java.sql:常用接口
javax.sql:扩展或者新特性的一些接口

Java不使用JDBC技术连接数据库图解:
这里写图片描述

Java使用JDBC技术连接数据库图解:
这里写图片描述

Java连接数据库图解:
这里写图片描述
语句执行者可以理解为船,connection连接可以理解为河流,船带着sql语句穿过河流到达数据库。

3.使用JDBC发送sql的条件
连接MySQL数据库:
(1)MySQL数据库主机地址;
(2)端口号;
(3)数据库用户名;
(4)数据库密码;
(5)连接的数据库。

private static String url = "jdbc:mysql://localhost:3306/XSGL";
 //jdbc协议:mysql协议://主机地址:端口号/需要连接的数据库名称

4.Java程序连接数据库需要引用mysql-connector-java-5.1.7-bin.jar包:
(1)选择mysql驱动包里面的mysql-connector-java-5.1.7-bin.jar文件并复制:
这里写图片描述
(2)将mysql-connector-java-5.1.7-bin.jar拷在项目下的webroot/web-inf/lib目录:
这里写图片描述
(3)选中mysql-connector-java-5.1.7-bin.jar文件右键–>Build Path–>Add to Bulid Path,显示如下图即代表成功:
这里写图片描述


JDBC核心API

1.Driver接口:每个驱动程序类必须实现的接口。
DriverManager 会试着加载尽可能多的它可以找到的驱动程序,然后,对于任何给定连接请求,它会让每个驱动程序依次试着连接到目标 URL。
(1)注册驱动
在加载某一 Driver 类时,它应该创建自己的实例并向 DriverManager 注册该实例。我们发现mysql驱动程序的Driver实现类已经帮我们在静态代码块中注册好了驱动,我们在此时只需要将Driver实现类加载到我们的内存中,static代码块就会自动执行,我们的驱动也就自动注册了。

 Class.forName("foo.bah.Driver")

(2)通过类 DriverManager创建一个到给定 URL 的数据库连接

static Connection getConnection(String url) 
static Connection getConnection(String url, Properties info) 
static Connection getConnection(String url, String user, String password) 

需求:利用Driver接口获取Java程序连接数据库的连接对象。

package com.jdbc.a_driver;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class DriverDemo {
    private static String url = "jdbc:mysql://localhost:3306/XSGL"";
    //jdbc协议:mysql协议://主机地址:端口号/需要连接的数据库名称
    private static String user = "root";
    private static String password="root";

    public static void main(String[] args) throws Exception {
        conn();
    }

    private static void conn() throws Exception {
        //注册驱动
        Class.forName("com.mysql.jdbc.Driver");

        //获取Java连接数据库的对象
        Connection conn = DriverManager.getConnection(url, user, password);

        //打印这个连接对象
        System.out.println(conn);

    }
}

2.Connection接口:与具体的数据库的连接(会话)。
(1)创建一个静态sql语句对象:

Statement createStatement() 

(2)创建预编译的sql语句对象:

PreparedStatement prepareStatement(String sql)  

(3)创建存储过程的sql语句对象:

CallableStatement prepareCall(String sql)  

3.Statement接口:用于执行静态sql语句。

(create/alter/drop) DDL语句
(insert/update/delete)DML语句
(select)DQL查询语句

(1)执行更新操作的sql语句:

int executeUpdate(String sql)                                                                           

(2)执行查询操作的sql语句:

ResultSet executeQuery(String sql)  

4.PreparedStatement接口:用于执行预编译的 SQL 语句(是Statement的子接口)。
(1)执行更新操作的sql语句:

int executeUpdate() 

(2)执行查询操作的sql语句:

ResultSet executeQuery()  

5.CallableStatement接口:用于执行 SQL 存储过程的接口(是PreparedStatement的子接口)。
执行存储过程的sql语句:

ResultSet executeQuery()  

6.ResultSet接口:结果集对象。 存储所有数据库查询的结果,用该对象进行数据遍历。
(1)ResultSet对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。
next()方法把光标移动到下一行。如果下一行有数据,返回true,如果没有下一行数 据,返回false。

boolean next()  

(2)ResultSet接口提供用于从当前行获取列值得方法(getBoolean,getLong等)。可以使用列的索引编号或列的名称获取值。

getXXX(列索引|列字段名称)

一般情况下,使用索引较为高效。但是建议以后使用的时候,最好使用列名称,这样会提高程序的维护性
(3)用作获取方法的输入的列名称不区分大小写。

  • 注意:
    • 如果光标在第一行之前,使用rs.getXX()获取列值,报错:Before start of result set
    • 如果光标在最后一行之后,使用rs.getXX()获取列值,报错:After end of result set

如何从结果集中取出我们想要的数据
(1)根据每一列的列号和每一列的数据类型调用相应的getXxx(int columnIndex)获取该字段的数据:

int getInt(int columnIndex) throws SQLException
String getString(int columnIndex) throws SQLException

(2)根据每一列的字段名称和每一列的数据类型调用getXxx(String columnLabel)获取该字段的数据:

int getInt(String columnLabel) throws SQLException
String getString(String columnLabel) throws SQLException

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值