第4讲 JDBC(上)

4.1 JDBC概述
JDBC:全称java database connectivity,java数据库连接。

JDBC四个核心对象
1.DriverManager
用于注册数据库驱动
2.Connection
数据库连接对象
3.Statement
数据库语句对象,用于执行sql语句
4.ResultSet
执行查询语句返回的结果集

4.2 初识JDBC程序
使用实例:
通过JDBC技术查询出数据库中的数据,并在控制台进行打印。

开发步骤1:搭建数据库环境以及准备数据
具体步骤:
1.创建一个数据库
2.在该数据库中创建一个数据表
3.往数据表中插入若干条数据

开发步骤2:创建 Web Project,添加mysql数据库驱动包。
mysql-connector-java-5.1.0-bin.jar

开发步骤3:实现JDBC操作
具体步骤:
1.通过反射加载驱动
2.创建连接对象
3.通过Connection的对象,创建执行sql语句的Statement对象
4.通过调用Statement接口中的executeQuery()方法执行sql语句,返回的结果存储在rs集合中
5.处理结果
6.关闭资源
具体代码如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class MyFirstJdbc {
private static String url=“jdbc:mysql://127.0.0.1:3306/dept?useUnicode=true&characterEncoding=utf-8”;
private static String user=“root”;
private static String password=“abc123”;
private static String sql=“select * from depts”;
public static void main(String[] args) {
try {
//1.通过反射加载驱动
Class.forName(“com.mysql.jdbc.Driver”);
//2.创建连接对象
Connection conn=DriverManager.getConnection(url, user, password);
//3.通过Connection的对象,创建执行sql语句的Statement对象
Statement stmt=conn.createStatement();
//4.通过调用Statement接口中的executeQuery()方法执行sql语句,返回的结果存储在rs集合中
ResultSet rs=stmt.executeQuery(sql);
//5.处理结果
while(rs.next()){
System.out.println(rs.getObject(“did”)+" "+rs.getObject(“dname”));
}
//6.关闭资源
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

注意:
1.getConnection()方法为静态方法,因此可以通过类名.方法名调用。而涉及的其它方法如createStatement()以及executeQuery()为非静态方法,需要通过对象名.方法名进行调用。
2.关闭资源时需要从下往上关闭,即先关闭ResultSet的对象,再关闭Statement的对象,最后关闭Connection的对象。

4.3 JDBC常用的类和接口
4.3.1 java.sql.DriverManager类
通过调用DriverManager类中的getConnection(String url,String user,String password)方法能够获取Connection 的对象。该方法为静态方法,可以直接通过类名.方法名进行调

用。在调用该方法获取Connection 的对象之前需要先通过反射加载数据库驱动。

代码示例:
//1.通过反射加载驱动
Class.forName(“com.mysql.jdbc.Driver”);
//2.创建连接对象
String url=“jdbc:mysql://127.0.0.1:3306/dept?useUnicode=true&characterEncoding=utf-8”;
String user=“root”;
String password=“abc123”;
Connection conn=DriverManager.getConnection(url, user, password);

数据库url:
url用于标识数据库的位置,其作用是通知JDBC程序连接哪个数据库。
url的写法:
协议+子协议+主机:端口号+数据库名?参数1=值1&参数2=值2…

4.3.2 java.sql.Connection 接口
客户端与数据库的所有交互都是通过Connection的对象完成。
Connection 接口中常用的方法:

createStatement()
作用:创建一个 Statement对象,用于将SQL语句发送到数据库。

prepareStatement(String sql)
作用:创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。
注意:该方法可以对SQL语句进行预编译

4.3.3 java.sql.Statement 接口
常用方法
方法:
1.executeQuery(String sql)
2.executeUpdate(String sql)
说明:
1.用于执行select查询语句,返回代表结果集的ResultSet对象
2.用于执行insert、update或delete语句,返回值为int类型,表示影响的行数;大于0说明执行成功。

4.3.4 java.sql.PreparedStatement 接口
SQL注入:
SQL注入是用户利用某些系统没有对输入数据进行充分检查,从而进行恶意破坏的行为。
Statement存在sql注入问题。

PreparedStatement 对象相对于Statement对象的优点:
1.可以避免SQL注入问题
2.PreparedStatement 对象可对SQL进行预编译,从而提高数据库的执行效率。
相对的Statement 对象会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。
3.PreparedStatement 对象可以使用占位符对SQL语句中的参数进行替换,简化SQL语句的编写。

4.3.5 java.sql.ResultSet 接口
jdbc程序中的ResultSet用于代表sql语句的执行结果。ResultSet封装执行结果时,采用的类似于表格的方式。ResultSet对象维护了一个指向表格数据行的游标,初始的时候,游标

在第一行之前,调用ResultSet.next()方法后,可以使游标指向具体的数据行。

1.移动游标的方法
方法:
next()
说明:
每调用一次将光标从当前位置向前移一行。

2.获取每一行中各列的数据
通过循环ResultSet.next()方法指向结果集中的每一行,得到具体的一行之后,再调用get()方法来获取当前行每一列的数据。
方法:
1.getObject(int index)
2.getObject(String columnName)
说明:
1.根据列索引(索引值从1开始)获取object类型数据
2.根据列名称获取object类型数据

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值